robots协议
一些网站有着robots协议,规定着哪些内容爬虫不可以爬取,以亚马逊为例:
当然爬不爬取取决于爬虫本身
首先,我们要找到一个合适的请求头,举个例:"python-requests/2.22.0"
这是爬虫的"Uesr-Agent",用这个可能会被部分网站拦截,或者爬取不到想要的东西,这时就要模拟headers
查看请求头的方法(以谷歌浏览器为例):
点击右键,找到审查元素
找到Network,随便点一个Path,再点headers,就看到请求头了
用爬虫模拟用户请求
import requests
url = "https://www.amazon.cn/"
header = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6',
'Connection': 'keep-alive',
'Content-Type': 'text/plain;charset=UTF-8',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56',}
print(requests.get(url,headers=header).content.decode()[:5000])
有这么多内容
我们把请求头换成爬虫试试
import requests
url = "https://www.amazon.cn/"
def head():
header = {
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'zh-cn',
'Connection': 'keep-alive',
'Host': 'www.amazon.cn/',
'Referer': 'https://www.baidu.com/',#表示从哪进入此网,这里表示从百度进入
'User-Agent':'python-requests/2.22.0'} #把请求头换成爬虫
return header
header = head()
print(requests.get(url,headers=header).content.decode()[:5000])
只获得了这一行字