二十一、数据采集实战
第3关:爬取与反爬取
任务描述
本关任务:编写一个爬虫,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
相关知识
随着网络爬虫对目标网站访问频率的加大,网站也会禁止爬虫程序访问。
常见反爬手段:
出现用户登录界面,需要验证码;
禁止某个固定用户帐号或 ip 一段时间内访问网站;
直接返回错误的无用数据。
应对措施:
优化爬虫程序,尽量减少访问次数,尽量不抓取重复内容;
使用多个 cookie (网站用来识别用户的手段,每个用户登录会生成一个 cookie );
使用多个 ip (可以用代理实现)。
下面是对爬取与反爬取的视频介绍:
任务描述
本关任务:编写一个爬虫,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
相关知识
随着网络爬虫对目标网站访问频率的加大,网站也会禁止爬虫程序访问。
常见反爬手段:
出现用户登录界面,需要验证码;
禁止某个固定用户帐号或 ip 一段时间内访问网站;
直接返回错误的无用数据。
应对措施:
优化爬虫程序,尽量减少访问次数,尽量不抓取重复内容;
使用多个 cookie (网站用来识别用户的手段,每个用户登录会生成一个 cookie );
使用多个 ip (可以用代理实现)。
下面是对爬取与反爬取的视频介绍:
任务描述
本关任务:编写一个爬虫,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
相关知识
随着网络爬虫对目标网站访问频率的加大,网站也会禁止爬虫程序访问。
常见反爬手段:
出现用户登录界面,需要验证码;
禁止某个固定用户帐号或 ip 一段时间内访问网站;
直接返回错误的无用数据。
应对措施:
优化爬虫程序,尽量减少访问次数,尽量不抓取重复内容;
使用多个 cookie (网站用来识别用户的手段,每个用户登录会生成一个 cookie );
使用多个 ip (可以用代理实现)。
下面是对爬取与反爬取的视频介绍:
课程视频《爬取与反爬取》
(视频中的案例可能随网站更新而无法使用,所以仅供参考)
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
测试说明
平台会对你编写的代码进行测试:
预期输出:
采集成功
开始你的任务吧,祝你成功!
课程视频《爬取与反爬取》
(视频中的案例可能随网站更新而无法使用,所以仅供参考)
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
测试说明
平台会对你编写的代码进行测试:
预期输出:
采集成功
开始你的任务吧,祝你成功!
课程视频《爬取与反爬取》
(视频中的案例可能随网站更新而无法使用,所以仅供参考)
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,实现对 https://www.zhihu.com/ 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
测试说明
平台会对你编写的代码进行测试:
预期输出:
采集成功
开始你的任务吧,祝你成功!
import urllib.request
def spider():
url="https://www.zhihu.com/"
# ********** Begin **********#
headers = {
"User‑Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.0.0 Safari/537.36"
}
req = urllib.request.Request(url, headers=headers)
resp = urllib.request.urlopen(req)
data = resp.read().decode("utf‑8")
with open("./step3/result.txt", "w", encoding="utf‑8") as f:
f.write(data)
print("采集成功")
# ********** End **********#
return data
有任何问题都可以随时关注私信!