利用 Python 自动抓取微博热搜,并定时发送至邮箱.docxVIP

利用 Python 自动抓取微博热搜,并定时发送至邮箱.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
利用 Python 自动抓取微博热搜,并定时发送至邮箱 进入微博热搜榜/top/summary后,全体页面如下: 可以看到,我们需要的热搜榜单信息在页面的正中心(总共50条热搜),这里我们需要爬取的信息有热搜标题、话题搜索量、以及话题指数。按F12进入网页源代码页面,点击element内容如下: 选中鼠标选项,点击你要爬取的信息,就可以看到对应的html源码。这里我们爬取的分为三个部分:标题、数量、指数、网址四个信息,而我们可以从网页源代码发觉如下规律: 信息 源代码规律 标题 标题 数量 数量 指数 指数 指数1 (.*?) 连接 标题 留意:这里之所以有指数和指数1源代码是由于前者猎取到的数据是有杂音的,所以需要再次用到指数1获得最终的信息。 之后我们运用requests包爬取网页源代码并通过re模块对爬取内容进行正则提取,由于每天仅执行一次,也就不用考虑恳求头什么的,Python代码如下: import?requests import?re url?=?/top/summary?cate=realtimehot?#微博网址 ret?=?requests.get(url) test?=?ret.text u_href?=?.*? u_title?=?(.*?) u_amount?=?(.*?) u_category?=?(.*?) u_href?=?.*? title?=?re.findall(u_title,test) amount?=?re.findall(u_amount,test) category?=?re.findall(u_category,test) href?=?re.findall(u_href,test) 二、数据清洗 上面猎取到的title、amount、category、href四个目标是未经处理的话题、话题搜索量、话题指数、话题连接。接下来我们对其进行处理,先上代码 import?pandas?as?pd title?=?title[:-2] title?=?title[1:] href?=?href[:-2] href?=?href[1:] for?j?in?range(len(href)): ????href[j]?=?/?+?href[j] while??in?amount: ????amount.remove() for?i?in?range(len(category)): ????if?category[i]?!=?: ????????category[i]?=?re.findall((.*?),category[i])[0] ????if?category[i]?==?: ????????category[i]?=?空 category?=?category[1:] while?荐?in?category: ????category.remove(荐) df?=?pd.DataFrame() df[关键词]?=?title df[amount]?=?amount df[category]?=?category df[href]?=?href df?=?df.sort_values(amount) df2?=?df[df[category]==爆] df3?=?df[df[category]==沸] df4?=?df[df[category]?==?热] df5?=?df[df[category]?==?新] df6?=?df[df[category]?==?空] df?=?pd.concat([df2,df3,df4,df5,df6],ignore_index?=?True) df.to_csv(微博热搜.csv,encoding?=?gbk)#输出为csv文本格式 下面对title进行处理,第一节爬取到的title是这样的, 总共只要50条热搜,怎样多出来3条?可以看到最终的两条是不需要的,所以用列表提取的方法提取前50行。还有一个元素多出来?就是我们的第一个元素,即是title[0],title[0]是没有序号与热搜搜索量的,如图: “天问一号成功着陆”这一话题有指数无搜索量,是属于缺失数据,这里我们删除它,同样用到列表提取元素方法。 对href连接的处理与title的处理相同。 接着对搜索量做处理,接受了删除空格的语句。缘由是热搜榜中会消灭推举的话题,而推举的话题是没有搜索量的,故我们删除它。 最终轮到指数处理,先看未处理前的指数, 上面显而易见我们要提取的指数信息就在每个元素里面,同样利用re模块正则提取,提取出来后做三件事: 去除第一个元素(缘由已在title处理上讲解) 空字符串部分以中文空子代替 去除推举的话题 上面三步的代码已附上。代码里最终的步骤就是运用

文档评论(0)

bob157641554 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档