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 相关文章推荐
编写同时兼容Python2.x与Python3.x版本的代码的几个示例
Mar 30 Python
使用Python的判断语句模拟三目运算
Apr 24 Python
windows下ipython的安装与使用详解
Oct 20 Python
python去除空格和换行符的实现方法(推荐)
Jan 04 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
Python 利用内置set函数对字符串和列表进行去重的方法
Jun 29 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Matplotlib绘制雷达图和三维图的示例代码
Jan 07 Python
python文件和文件夹复制函数
Feb 07 Python
如何安装并在pycharm使用selenium的方法
Apr 30 Python
django创建超级用户时指定添加其它字段方式
May 14 Python
opencv 阈值分割的具体使用
Jul 08 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中将字符串转为HTML的实体引用的一个类
2013/02/03 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
2014/05/04 PHP
php 把数字转换成汉字的代码
2015/07/21 PHP
PHP进程通信基础之信号量与共享内存通信
2017/02/19 PHP
老生常谈PHP面向对象之解释器模式
2017/05/17 PHP
PHP命令空间namespace及use的用法小结
2017/11/27 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
2012/02/27 Javascript
jquery ui dialog实现弹窗特效的思路及代码
2013/08/03 Javascript
页面载入结束自动调用js函数示例
2013/09/23 Javascript
javascript读写json示例
2014/04/11 Javascript
jQuery ajax serialize() 方法使用示例
2014/11/02 Javascript
jquery隔行换色效果实现方法
2015/01/15 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
jQuery Easyui加载表格出错时在表格中间显示自定义的提示内容
2016/12/08 Javascript
使用jQuery操作DOM的方法小结
2017/02/27 Javascript
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
JS中Map和ForEach的区别
2018/02/05 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
js中实现继承的五种方法
2021/01/25 Javascript
ES6的循环与可迭代对象示例详解
2021/01/31 Javascript
使用Python判断IP地址合法性的方法实例
2014/03/13 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
详解Python操作RabbitMQ服务器消息队列的远程结果返回
2016/06/30 Python
全网最细 Python 格式化输出用法讲解(推荐)
2021/01/18 Python
Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
2021/01/28 Python
CSS Grid布局教程之什么是网格布局
2014/12/30 HTML / CSS
Street One瑞士:德国现代时装公司
2019/10/09 全球购物
爱尔兰旅游网站:ebookers.ie
2020/01/24 全球购物
银行柜员求职自荐书
2014/06/18 职场文书
公务员党员评议表自我鉴定
2014/09/14 职场文书
居委会个人对照检查材料思想汇报
2014/09/29 职场文书
2016优秀毕业生个人事迹材料
2016/02/29 职场文书