Robots协议
既然我们要学爬虫,那么首先就需要先了解robot协议是什么?
robots协议也叫robots.txt(统一小写)是一种存放于网站根目录下的ASCII编码的文本文件,它通常告诉网络搜索引擎的漫游器(又称网络蜘蛛),此网站中的哪些内容是不应被搜索引擎的漫游器获取的,哪些是可以被漫游器获取的。因为一些系统中的URL是大小写敏感的,所以robots.txt的文件名应统一为小写。robots.txt应放置于网站的根目录下。如果想单独定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用robots元数据(Metadata,又称元数据)。
基本的大型网站都会有这个协议,我们在它们的域名后面加上 /robots.txt就能查看它的协议,就能知道哪些东西它允许爬,哪些不允许,比如我们的CSDN,当然这目前只是一个道德规范,还不构成法律效应
浏览器UA标识
User Agent中文名为用户代理,是Http协议中的一部分,属于头域的组成部分,User Agent也简称UA。它是一个特殊字符串头,是一种向访问网站提供你所使用的浏览器类型及版本、操作系统及版本、浏览器内核、等信息的标识。通过这个标识,用户所访问的网站可以显示不同的排版从而为用户提供更好的体验或者进行信息统计;例如用手机访问谷歌和电脑访问是不一样的,这些是谷歌根据访问者的UA来判断的。UA可以进行伪装。
常见反爬虫策略
User-Agent + Referer检测
账号及Cookie验证
验证码
IP限制频次
既然有反爬虫策略,自然有反反爬虫的办法,爬虫技术可以做到模拟浏览器甚至真人的操作,比如:selenium可以模拟浏览器操作,既然可以通过UA来识别爬虫,就可以模拟UA,既然可以通过IP地址访问次数来识别,就可以动态IP来破解,既然有通过浏览速度来识别,就可以设定爬取速度过快等等等。总之,就是道高一尺魔高一丈,现在还没有网站能作到完全的反爬虫,然后这些东西我会在后面慢慢跟新…
一样的首先需要先下载我们的requests
下载命令:pip requests install
直接上代码
"""
爬取豆瓣电影TOP250,分页保存电影数据
"""
import requests
import time
headers = {
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36"
}
for i in range(10):
url=f"https://movie.douban.com/top250?start={i*25}"
response=requests.get(url,headers=headers,verify=False)
print(response.status_code)
if response.status_code==200:
# 获取网页数据
with open(f"第{i+1}页.html","w",encoding="UTF-8") as f:
f.write(response.text)
print(f"{url}保存成功")
time.sleep(2)