头歌实践教学平台:数据科学与大数据技术导论(二十一4)
2026/8/30 12:38:58 网站建设 项目流程

二十一、数据采集实战

第4关:爬取与反爬取进阶

任务描述
本关任务:使用随机请求头爬取 baike.baidu.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。

相关知识
在反爬机制中,许多网站会通过 ip 以及请求头来限制你的访问,在不影响网站正常运作的情况下,我们可以使用 ip 代理池以及随机请求头来伪装自己的爬虫,其中需要用到的就是 python 的 random 模块。

下面是对爬取与反爬取进阶的视频介绍:

任务描述
本关任务:使用随机请求头爬取 baike.baidu.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。

相关知识
在反爬机制中,许多网站会通过 ip 以及请求头来限制你的访问,在不影响网站正常运作的情况下,我们可以使用 ip 代理池以及随机请求头来伪装自己的爬虫,其中需要用到的就是 python 的 random 模块。

下面是对爬取与反爬取进阶的视频介绍:

任务描述
本关任务:使用随机请求头爬取 baike.baidu.com/text/ 前两页的段子内容,并保存在 ./step4/content.txt 中。

相关知识
在反爬机制中,许多网站会通过 ip 以及请求头来限制你的访问,在不影响网站正常运作的情况下,我们可以使用 ip 代理池以及随机请求头来伪装自己的爬虫,其中需要用到的就是 python 的 random 模块。

下面是对爬取与反爬取进阶的视频介绍:


课程视频《爬取与反爬取进阶》

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用随机请求头爬取 baike.baidu.com/text/ 前两页的内容,并保存在 ./step4/content.txt 中。

测试说明
平台会对你编写的代码进行测试:

预期输出:

第1页采集成功
第2页采集成功
内容保存成功

开始你的任务吧,祝你成功!

课程视频《爬取与反爬取进阶》

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用随机请求头爬取 baike.baidu.com/text/ 前两页的内容,并保存在 ./step4/content.txt 中。

测试说明
平台会对你编写的代码进行测试:

预期输出:

第1页采集成功
第2页采集成功
内容保存成功
开始你的任务吧,祝你成功!

课程视频《爬取与反爬取进阶》

编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,使用随机请求头爬取 baike.baidu.com/text/ 前两页的内容,并保存在 ./step4/content.txt 中。

测试说明
平台会对你编写的代码进行测试:

预期输出:

第1页采集成功
第2页采集成功
内容保存成功

开始你的任务吧,祝你成功!

import urllib.request
import re
import random
#请求头
uapools=[
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393",
"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.22 Safari/537.36 SE 2.X MetaSr 1.0",
"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Maxthon 2.0)",
]
def UA():
#********** Begin **********#
# 使用随机请求头
ua = random.choice(uapools)
headers = {"User‑Agent": ua}
return headers
#********** End **********#

def main(page): # page为页号,int类型
#********** Begin **********#
url = f"https://baike.baidu.com/text/{page}"
headers = UA()
req = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(req)
html = resp.read().decode("utf‑8")
print(f"第{page}页采集成功")
return html
#********** End **********#

# 下面是平台内部调用逻辑,不需要写在答题区
if __name__ == '__main__':
all_text = ""
for p in [1,2]:
all_text += main(p)
with open("./step4/content.txt","w",encoding="utf‑8") as f:
f.write(all_text)
print("内容保存成功")

有任何问题都可以随时关注私信!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询