紧接着上节课来看,只要是有点水平的网站就会对爬虫挖个坑,例如:下面的
import requests
url = "https://www.amazon.cn/dp/
try:
r = requests.get(url)
r.raise_for_status()
r.encoding = r.apparent_encoding
print(r.text[:1000])
except:
print("爬取失败")
结果:
和爬取京东商品一样的操作,但是并没有爬取到商品信息,因此我们联想到可能是亚马逊限制了我们的爬虫访问。
限制网络爬虫的方法:来源审查: 检查来访HTTP协议头的User - Agent域,只响应浏览器或友好爬虫的访问。
发布公告: Robots协议,告知所有爬虫网站的爬取策略,要求爬虫遵守。
们的爬虫告诉亚马逊服务器这次的访问是由一个python的requests库的程序产生的。而亚马逊的来源审查可能不支持这样的访问。
那么我们可以试着更改头部信息,模拟一个浏览器向亚马逊发送请求,操作如下:
import requests
kv = {'User-Agent': 'Mozilla/5.0'} # 是一个标准的浏览器的身份标识的字段
url = "https://www.amazon.cn/dp/B07G7K1Z98/ref=sr_1_3?ie=UTF8&qid=1551539393&sr=8-3&keywords=%E5%B0%8F%E9%B8%9F%E8%80%B3%E6%9C%BA"
r = requests.get(url,headers=kv) #注意这里要加headers,因为headers已经修改过。
print(r.status_code)
print(r.request.headers)
print(r.text[1000:2000])
结果呢?可想而知,一切如我们期望的,快来试试