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爬虫代理IP快速增加博客阅读量
Dec 14 Python
详解python3中的真值测试
Aug 13 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
Python读取YUV文件,并显示的方法
Dec 04 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Python实现把多维数组展开成DataFrame
Nov 30 Python
Python Gluon参数和模块命名操作教程
Dec 18 Python
使用 Python 在京东上抢口罩的思路详解
Feb 27 Python
Python实现密钥密码(加解密)实例详解
Apr 26 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
Jun 04 Python
python元组拆包实现方法
Feb 28 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
thinkphp在模型中自动完成session赋值示例代码
2014/09/09 PHP
php函数serialize()与unserialize()用法实例
2014/11/06 PHP
php查询相似度最高的字符串的方法
2015/03/12 PHP
php set_include_path函数设置 include_path 配置选项
2016/10/30 PHP
PHP 表单提交及处理表单数据详解及实例
2016/12/27 PHP
利用PHP获取访客IP、地区位置、浏览器及来源页面等信息
2017/06/27 PHP
HTML中不支持静态Expando的元素的问题
2007/03/08 Javascript
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
JavaScript CSS修改学习第一章 查找位置
2010/02/19 Javascript
基于jQuery的仿flash的广告轮播代码
2010/11/04 Javascript
JavaScript 原型继承之构造函数继承
2011/08/26 Javascript
推荐一个封装好的getElementsByClassName方法
2014/12/02 Javascript
jQuery实现的超简单点赞效果实例分析
2015/12/31 Javascript
AngularJS内建服务$location及其功能详解
2016/07/01 Javascript
微信小程序 利用css实现遮罩效果实例详解
2017/01/21 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
js实现简易垂直滚动条
2017/02/22 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
jQuery.Ajax()的data参数类型详解
2017/07/23 jQuery
template.js前端模板引擎使用详解
2017/10/10 Javascript
video.js 实现视频只能后退不能快进的思路详解
2018/08/09 Javascript
Vue双向绑定实现原理与方法详解
2020/05/07 Javascript
JS常用跨域方法实现原理解析
2020/12/09 Javascript
轻松掌握python设计模式之策略模式
2016/11/18 Python
CentOS 7 安装python3.7.1的方法及注意事项
2018/11/01 Python
python实现几种归一化方法(Normalization Method)
2019/07/31 Python
Django连接数据库并实现读写分离过程解析
2019/11/13 Python
Python dict和defaultdict使用实例解析
2020/03/12 Python
python将unicode和str互相转化的实现
2020/05/11 Python
欧洲顶级体育电子商务网站:SportsShoes.com
2018/03/27 全球购物
为什么会有内存对齐
2016/10/10 面试题
一套C#面试题
2013/10/09 面试题
邹越感恩父母演讲稿
2014/08/28 职场文书
九一八事变纪念日演讲稿
2014/09/14 职场文书
银行大堂经理培训心得体会
2016/01/09 职场文书