总结:
1.模拟浏览器访问
一些被爬取的网站在收到get请求时会检查get头部信息,默认python会设为requests库,当网站检测到这个请求是一个爬虫的时候,就会拒绝此次响应。
解决方法:
我们可以使用requests.get()的可选参数headers,将我们的请求头部模拟成一个真实的浏览器。(由于很多浏览器请求头都是mozilla/5.0)所以我们就模拟这个。
·构造一个字典
kv = {‘user-agent’:’Mozilla/5.0’}
url = "https://www.icourse163.org/learn/BIT-1001870001?tid=1001962001#/learn/content?type=detail&id=1002627079&cid=1003044729"
r = requests.get(url,headers = kv)
由于我们将header部分的user-agent部分修改成了mozilla/5.0(一种标准浏览器请求)
服务器就会认为这是一个“人”的行为从而返回正确的信息。
2.百度/360搜索关键词提交
百度关键词接口:http://www.baidu.com/s?wd=keyword
360的关键词接口:http://www.so.com/s?q=keyworld
百度360都开放了搜索关键词提交接口,我们在爬虫中就可以利用这些接口模拟一次对搜索引擎的一次关键词查询。
解决方法:
我们使用requests库的get方法中的可选参数params来动态构造url实现对搜索引擎的查询
·构造一个字典
·使用get方法,并设置params参数
Kv = {‘wd’:’keywords’}
r = requests.get(url,params = kv)
其中keywords为搜索关键词
3.网络图片的爬取和储存
网络图片在服务以二进制的形式保存在服务器上,我们要先在本地打开一个文件,然后将爬取到的二进制文件写入本地文件(使用的requests.content()方法)再保存就完成了图片的爬取
解决方法:
·选择保存路径
·利用requests库打开一个图片文件
·打开本地文件
·写入二进制数据(requests.content()方法)
·关闭流
Path = “d://abc.jpg”
r = requests.get(“url”)
r.raise_for_status
with open(path,’wb’) as f:
f.write(r.content)
f.close()