Python网络爬虫之爬取微博热搜
作者:Huan_Yang 发布时间:2021-08-31 02:53:50
标签:python,爬虫,微博,热搜
微博热搜的爬取较为简单,我只是用了lxml和requests两个库
url= https://s.weibo.com/top/summary?Refer=top_hot&topnav=1&wvr=6
1.分析网页的源代码:右键--查看网页源代码.
从网页代码中可以获取到信息
(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网络爬虫之爬取微博热搜,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:http://www.cnblogs.com/JustNo/p/10726802.html


猜你喜欢
- ??本文核心:setup()概念、 reactive()的使用【前言】vue3作为vue2的升级版,有着很多的新特性,其中就包括了组合式AP
- 一、Beautiful Soup的介绍Beautiful Soup是一个强大的解析工具,它借助网页结构和属性等特性来解析网页。它提供一些函数
- Exec 是 os 包中的一个子包,它可用于使用 Go 运行外部命令。Go exec 命令教程展示了如何在 Golang 中执行 shell
- 效果基于Python3。在自己写小工具的时候因为这个功能纠结了一会儿,这里写个小例子,供有需要的参考。小例子,就是点击按钮打开路径选择窗口,
- 今天发现有一个备份的mysql数据文件夹异常变大,一查发现是多了三个文件:ibdata1 ib_logfile0 ib_logfile1,前
- 我一直使用Microsoft的FrontPage 98来开发ASP/ADO之类的Internet数据库应用程序。现在我听说许多人都非常信奉采
- 1 解决方案【方案一】载入模型结构放在全局,即tensorflow会话外层。'''载入模型结构:最关键的一步'
- 1、将一个字典输入:该字典必须满足:value是一个list类型的元素,且每一个key对应的value长度都相同:(以该字典的key为col
- 周期置换密码参考教材:《现代密码学教程》P47 3.1.2加密解密过程周期置换密码是将明文p串按固定长度m分组.然后对每组中的子串按1,2&
- 标准库的fnmatch库专门用来进行文件名匹配,支持使用通配符进行字符串匹配。1、fnmatch:判断文件名是否符合特定的模式;2、fnma
- 每次安装总是有些不同,这次用这种方式尝试一下,也记录一下。1、首先需要去下载rpm包:镜像地址:http://mysql.mirrors.p
- 目录一、问题具体描述:二、解决方法1、方法一:在PyCharm下载第三方库(即把之前下的库作废,这里重新再下一次……)2、方法二:坚持用pi
- 日志文件对于一个服务器来说是非常重要的,它记录着服务器的运行信息,许多操作都会写日到日志文件,通过日志文件可以监视服务器的运行状态及查看服务
- 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码。但是,建议你为每个账户设置密码。如果你以前设置了根用户密码,
- Python是目前最流行的语言之一,它在数据科学、机器学习、web开发、脚本编写、自动化方面被许多人广泛使用。它的简单和易用性造就了它如此流
- 『写在前面』以CTC Beam search decoder为例,简单整理一下TensorFlow实现自定义Op的操作流程。基本的流程1.
- 如,现在需要判断命令行是否传了参数,即 os.Args[1] 是否存在如果使用下述的判断:package main import ( &qu
- asp之家注:如果你学习过asp,并且在网络公司上过班,一定会接触到网购系统,网购系统可以说是一个典型的程序类型,而其中最重要,也是最关键的
- 本文实例讲述了javascript实现Table排序的方法。分享给大家供大家参考。具体实现方法如下:<!DOCTYPE html PU
- 1 conda介绍conda是一个python的包管理器,用来管理、安装、更新python的包和相关的依赖。另外,conda可以为特定任务创