Python网络爬虫之爬取微博热搜


Posted in Python onApril 18, 2019

微博热搜的爬取较为简单,我只是用了lxml和requests两个库

url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6

1.分析网页的源代码:右键--查看网页源代码.

Python网络爬虫之爬取微博热搜

从网页代码中可以获取到信息

(1)热搜的名字都在<td class="td-02">的子节点<a>里

(2)热搜的排名都在<td class=td-01 ranktop>的里(注意置顶微博是没有排名的!)

(3)热搜的访问量都在<td class="td-02">的子节点<span>里

2.requests获取网页

(1)先设置url地址,然后模拟浏览器(这一步可以不用)防止被认出是爬虫程序。

###网址
url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"
###模拟浏览器,这个请求头windows下都能用
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}

(2)利用req uests库的get()和lxml的etr ee()来获 取网页代码

###获取html页面
  html=etree.HTML(requests.get(url,headers=header).text)

3.构造xpath路径

上面第一步中三个xath路径分别是:

affair=html.xpath('//td[@class="td-02"]/a/text()')
rank=html.xpath('//td[@class="td-01 ranktop"]/text()')
view=html.xpath('//td[@class="td-02"]/span/text()')

xpath的返回结果是列表,所以affair、rank、view都是字符串列表

  4.格式化输出

需要注意的是affair中多了一个置顶热搜,我们先将他分离出来。

top=affair[0]
affair=affair[1:]

这里利用了python的切片。

print('{0:<10}\t{1:<40}'.format("top",top))
  for i in range(0, len(affair)):
    print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))

这里还是没能做到完全对齐。。。

 5.全部代码

###导入模块
import requests
from lxml import etree
###网址
url="https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6"
###模拟浏览器
header={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36'}
###主函数
def main():
  ###获取html页面
  html=etree.HTML(requests.get(url,headers=header).text)
  rank=html.xpath('//td[@class="td-01 ranktop"]/text()')
  affair=html.xpath('//td[@class="td-02"]/a/text()')
  view = html.xpath('//td[@class="td-02"]/span/text()')
  top=affair[0]
  affair=affair[1:]
  print('{0:<10}\t{1:<40}'.format("top",top))
  for i in range(0, len(affair)):
    print("{0:<10}\t{1:{3}<30}\t{2:{3}>20}".format(rank[i],affair[i],view[i],chr(12288)))
main()

结果展示:

Python网络爬虫之爬取微博热搜

总结

以上所述是小编给大家介绍的Python网络爬虫之爬取微博热搜,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
Python中实现字符串类型与字典类型相互转换的方法
Aug 18 Python
python中使用xlrd、xlwt操作excel表格详解
Jan 29 Python
Python中字典的setdefault()方法教程
Feb 07 Python
Pandas探索之高性能函数eval和query解析
Oct 28 Python
Python+pandas计算数据相关系数的实例
Jul 03 Python
详解pandas使用drop_duplicates去除DataFrame重复项参数
Aug 01 Python
解决python3 安装不了PIL的问题
Aug 16 Python
PyTorch中常用的激活函数的方法示例
Aug 20 Python
Python如何读取文件中图片格式
Jan 13 Python
使用jupyter notebook运行python和R的步骤
Aug 13 Python
Python实现LR1文法的完整实例代码
Oct 25 Python
Python 如何解决稀疏矩阵运算
May 26 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
Apr 18 #Python
详解python 模拟豆瓣登录(豆瓣6.0)
Apr 18 #Python
Python面向对象总结及类与正则表达式详解
Apr 18 #Python
python接口自动化(十七)--Json 数据处理---一次爬坑记(详解)
Apr 18 #Python
详解python数据结构和算法
Apr 18 #Python
python基础知识(一)变量与简单数据类型详解
Apr 17 #Python
关于python多重赋值的小问题
Apr 17 #Python
You might like
php正则校验用户名介绍
2008/07/19 PHP
PHP分页效率终结版(推荐)
2013/07/01 PHP
Lumen timezone 时区设置方法(慢了8个小时)
2018/01/20 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
区分JS中的undefined,null,&quot;&quot;,0和false
2007/03/08 Javascript
XML的代替者----JSON
2007/07/21 Javascript
JavaScript让IE浏览器event对象符合W3C DOM标准
2009/11/24 Javascript
十个优秀的Ajax/Javascript实例网站收集
2010/03/31 Javascript
Jquery ui css framework
2010/06/28 Javascript
jquery实现瀑布流效果分享
2014/03/26 Javascript
JavaScript实现找出字符串中第一个不重复的字符
2014/09/03 Javascript
JavaScript中三种异步上传文件方式
2016/03/06 Javascript
让html元素随浏览器的大小自适应垂直居中的实现方法
2016/10/12 Javascript
AngularJs基于角色的前端访问控制的实现
2016/11/07 Javascript
微信小程序实战之自定义抽屉菜单(7)
2017/04/18 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
2018/01/23 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
vue2.0 下拉框默认标题设置方法
2018/08/22 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
详解vue父子组件关于模态框状态的绑定方案
2019/06/05 Javascript
windows实现npm和cnpm安装步骤
2019/10/24 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
jquery css实现流程进度条
2020/03/26 jQuery
快速排序的算法思想及Python版快速排序的实现示例
2016/07/02 Python
Python中几种导入模块的方式总结
2017/04/27 Python
浅谈Python 多进程默认不能共享全局变量的问题
2019/01/11 Python
Python3日期与时间戳转换的几种方法详解
2019/06/04 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
深入了解如何基于Python读写Kafka
2019/12/31 Python
PyCharm Ctrl+Shift+F 失灵的简单有效解决操作
2021/01/15 Python
道路交通安全实施方案
2014/03/12 职场文书
《理想的风筝》教学反思
2014/04/11 职场文书
小学校长汇报材料
2014/08/20 职场文书
2015年银行信贷员工作总结
2015/05/19 职场文书
2016年万圣节活动总结
2016/04/05 职场文书
详解overflow:hidden的作用(溢出隐藏、清除浮动、解决外边距塌陷)
2021/07/01 HTML / CSS