目录
任务描述
本关任务:编写一个爬虫,实现对 知乎 - 有问题,就会有答案 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
相关知识
随着网络爬虫对目标网站访问频率的加大,网站也会禁止爬虫程序访问。
常见反爬手段:
-
出现用户登录界面,需要验证码;
-
禁止某个固定用户帐号或 ip 一段时间内访问网站;
-
直接返回错误的无用数据。
应对措施:
-
优化爬虫程序,尽量减少访问次数,尽量不抓取重复内容;
-
使用多个 cookie (网站用来识别用户的手段,每个用户登录会生成一个 cookie );
-
使用多个 ip (可以用代理实现)。
编程要求
请仔细阅读右侧代码,结合相关知识,在 Begin-End 区域内进行代码补充,实现对 知乎 - 有问题,就会有答案 该网址所有信息的爬取,并将结果保存在 step3/result.txt 中。
测试说明
平台会对你编写的代码进行测试:
预期输出:采集成功
import urllib.request
def spider():
url="https://www.zhihu.com/"
# ********** Begin **********#
# 构建opener
opener = urllib.request.build_opener()
# User-Agent设置成浏览器的值
User_Agent = (
'User-agent', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
# 将UA添加到headers中
opener.addheaders = [User_Agent]
urllib.request.install_opener(opener)
data = urllib.request.urlopen(url).read().decode("utf-8", "ignore")
with open('step3/result.txt', 'a') as fp:
fp.write(data)
# ********** End **********#
return data