注:本篇学习需要python基础,html基础,xpath基础
前言:在上篇中,我们学习了怎么用python发送网页请求来获取网站的源代码,在这篇中,我们将进一步学习
本篇目标:利用python爬虫获取百度热搜
第一步,用浏览器打开百度热搜网站
百度热搜网址 https://top.baidu.com/board?tab=realtime
页面如下:
第二步,按下F12键打开浏览器开发者界面,找到热搜文本元素
第三步,右键单击文本元素复制Xpath
第四步,编写代码
1 2 3 4 5 6 7 8 9 10 11 12
| import requests from lxml import etree
url = 'https://top.baidu.com/board?tab=realtime' response = requests.get(url)
doc = etree.HTML(response.text)
result = doc.xpath(r'//*[@id="sanRoot"]/main/div[2]/div/div[2]/div[2]/div[2]/a/div[1]/text()')
print(result[0])
|
结果如下:
我们成功获取到了第一个热搜,但是我们想要全部的热搜怎么办?
于是我们继续复制第二个热搜的xpath,与第一个对比
1 2
| 第一个 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 2 ]/div[2]/a/div[1]/text() 第二个 //*[@id="sanRoot"]/main/div[2]/div/div[2]/div[ 3 ]/div[2]/a/div[1]/text()
|
我们发现中间有一个数字不同,因此发现规律,接下来我们改进代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| import requests from lxml import etree
url = 'https://top.baidu.com/board?tab=realtime' response = requests.get(url)
doc = etree.HTML(response.text)
for i in range(1,12): xpath = '//*[@id="sanRoot"]/main/div[2]/div/div[2]/div['+str(i)+']/div[2]/a/div[1]/text()' res = doc.xpath(xpath) print(str(i)+":"+res[0])
|
结果如下:
1 2 3 4 5 6 7 8 9 10 11
| 1: 中国为何始终属于“全球南方” 2: 00后女生成为上市公司总裁 3: 菲律宾“坐滩”军舰有多毒 4: 应对高温“渴”不容缓 5: 浙传毕业大片 这知识学了是真用 6: 大学生39天减重近20斤后“猝死” 7: 内蒙古一停工写字楼内发现遗体 8: 四级结束 已老实 9: 棚改小面积能换更大平方?谣言 10: 李开复:对中国大模型DAU很失望 11: 4名小男孩合力挪走挡路树枝
|
目标达成,在下一篇文章中,我们将进一步进阶学习