第一次写博客,想要记录学习python爬虫的过程,如有不当地方请指出,谢谢。
什么是静态网页
静态网页的定义是这样的:
指在服务器上保存成HTML文档的网页,它的内容不会随着用户的操作而发生变化,只能通过修改网页源代码来进行更新。静态网页通常是由HTML、CSS和JavaScript等静态文件组成,访问速度较快,但交互性和动态性较差。
简单来说,静态网页的内容只能通过修改网页源代码来更新,用户的操作不会影响静态网页的变化。
如果我们想要爬取静态网页的数据,先向它发送网络请求获得返回的数据,再通过解析,定位目标数据的位置,最后根据相应方法提取出来就可以了。
爬取微博热搜榜
这里我们以爬取微博热搜榜为例。
我们需要获得热搜榜上的关键词以及每个关键词对应的排名。首先我们需要复制该页面的网址,同时为了能让我们的爬虫访问网页更加像人的操作,我们还需要得到我们所用的浏览器的headers请求头中的User-Agent和Cookies。查看方式可以在网页中单击鼠标右键——审查元素——刷新网页——网络——文档。如下图所示,此处以360浏览器示例,这里按上述操作后可以看见左边区域有个summary文件,点击可以查看到Cookies以及User-Agent。
之后,用变量保存网址以及Cookies和User-Agent。
url = 'https://s.weibo.com/top/summary' // 保存网址// 用字典保存请求头信息
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360SE','cookie':'此处写上自己的cookies值'
}
准备工作做好了之后就可以开始爬取数据了。首先我们需要向网页发送请求,这里我使用的是requests模块。
发送请求之后网页会返回给我们网页的数据,此时我们需要解析这些数据,之后需要定位我们需要的信息的位置。定位的操作方法是右键目标信息,点击审查元素。
可以看到每个tbody标签下的td标签里都有一个a标签,而a标签里就存放着关键词的文本数据。因此我们只需要定位到这个a标签,并获得它的文本数据就能获得到我们需要的关键词了。
然后,就可以编写我们的爬虫程序了。
import requests // 导入requests模块(需要提前下载)
from lxml import etree // 从etree库中导入lxml包,用于标签定位// 首先把之前保存的url和headers信息复制过来
url = 'https://s.weibo.com/top/summary'
headers = {'user-agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36 QIHU 360SE','cookie':'此处写上自己的cookies值'
}// 向网页发送请求,并用变量response接收返回的数据
response = requests.get(url, headers=headers)// 将返回的数据使用.text方法转化为文本,再由etree.HTML()方法将其转变成XML元素对象类型,用变量e保存,用于后续的定位
e = etree.HTML(response.text)// 利用xpath表达式定位数据,双斜杠是XPath表达式中的简写语法,表示选择当前节点下的所有子孙节点,text()表示获得当前标签下的文本数据,返回的结果用result_list接收,内容是一个列表
result_list = e.xpath('//td/a/text()')// 遍历列表取出数据,并输出及其下标
for index, result in enumerate(result_list):print(index, result)
运行结果如下
0 看中国经济活力与机遇
1 你懒 就没有作品
2 乌合麒麟 丛林之隙
3 国家网信办介绍2023年清朗行动有关情况
4 免费坐高铁
5 ChatGPT替代不了水瓶射手双子
6 适合30岁以上的工作找到了
7 阿黛尔无限期中止职业生涯
8 苏醒加盟跑男
9 权志龙将3个月内回归
10 全面清理虚构摆拍导向不良的短视频
11 揭开上海杀妻藏尸案背后不为人知的事
12 iPhone13成2022年中国最畅销手机
13 中国便秘日
14 什么是巧克力囊肿
15 微博之夜女星妆造揭秘
16 瑞幸被吐槽咖啡3口喝完剩下全是冰
17 TVB艺人为直播集体苦练普通话
18 刘亦菲拍照好喜欢叉腰
19 张静初被美国电影学院导演系录取
20 长月烬明
21 中国哪个小县城名字最好听
22 女生同情老人买5西瓜切开发现全坏
23 杨颖数字高定
24 杨紫的社交圈好广
25 被杜华杨天真通讯录人数吓到
26 顾客疑因不满发型被理发师杀害
27 吴磊的肱二头肌
28 社会的边角料 妈妈的小骄傲
29 真正不想上班的原因是什么
30 一文速览2023清朗行动发布会要点
31 网传乘风破浪4初舞台歌单
32 70.8%上海人只希望有一个孩子
33 狗狗的想法
34 流浪地球2将在韩国上映
35 四六级
36 女子地铁照被AI一键脱衣传播
37 iPhone折旧率仅为安卓一半
38 4岁男童患罕见病体重仅有8.8斤
39 爱情而已
40 这婚礼算是相当炸裂了
41 防止泄露未成年人隐私的欺凌视频传播
42 BLACKPINK或将出席白宫晚宴
43 没想到栏杆是用来防明星的
44 大侦探蓝色大海的传说剧照
45 蔡徐坤走路好男模
46 西湖摇橹船的意境感绝了
47 马丽乔杉四搭
48 迪丽热巴工作花絮
49 去学生宿舍上厕所的猫咪
50 厦门人到底有多爱芋泥
这样,一个简单的爬虫程序就完成了。
总结
对于写好一个爬虫,了解并理解相应的流程是必需的,对于一个没有什么反爬机制的网页,我们只需要按照明确需求——分析网站结构——发送请求——解析网页——存储数据,这个顺序来编写我们的代码,再选择相应的方法就可以很好的完成我们的爬虫程序了。