这部分是爬虫初步的 爬取实例 ,涉及网站、搜索、图片等查询。
网络爬虫
Robots协议
作用:网站告知网络爬虫哪些页面可以抓取,哪些不行。
形式:在网站根目录下的robots.txt文件
基本语法:
1 | # 注释,*代表所有,/代表根目录 |
百度robots协议查看:https://www.baidu.com/robots.txt
案例
1、爬取亚马逊商品信息
在我们用简单的get方法爬取时,获取状态码显示503
返回的 r 中包含 request 请求。
通过r.request.headers
查看头部信息,看到User-Agent选项不是浏览器的信息,可以得知亚马逊会组织非浏览器的访问。
方法:更改头部信息,使该爬虫模拟浏览器登录。
1 | kv = {'user-agent':'Mozilla/5.0'} |
此时即可正常爬取。
2、爬虫指定关键字到百度查询结果
百度的关键词接口:
1 | http://www.baidu.com/s?wd=keyword |
输入keyword得到搜索引擎的搜索结果。
即对我们的requests库,构造这样的url即可。
3、网络图片的爬取和存储
图片在网络上的存储地址以图片的后缀为结尾。
代码中,r.content
是内容的二进制形式,写入目标文件可得到相应图片。
补充(url拼接)
如果遇到url的拼接问题,建议使用 ``urllib.parse的
urljoin` 方法。
1 | from urllib.parse import urljoin |
可以解决一些url 用 + 连接符产生的问题。