python图片爬虫 作者: Asser 时间: 2016-04-26 分类: 阅读:次 # 利用requests实现简单的的静态爬虫 ## ------使用requests库的get方法获取目标网页内容--------- ``` python import requests url = "target_url" res = requests.get(url) ``` ### 这里我遇到了几个问题: ### 一、某些网站为了采用了几种防御措施来防止爬虫程序。我目前遇到的主要是两种情况: #### 1.采用js异步加载的方式防止网络爬虫 解决办法:利用chrome插件对目标url进行dom操作,获取所需要的链接的url并发送给php文件,再利用php文件进行爬取。 #### 2.采用浏览器检测和防盗链防止网络爬虫 解决办法:为requests设置headers以达到模拟浏览器访问的效果,并通过 *Referer* 解决防盗链问题 ```python user_agent = 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36' headers = {'User-Agent':user_agent,'Referer':'http://image.baidu.com/' } ``` 以上代码为针对*度的图片库的防盗链 ### 二、对于利用requests的get方式获取到的内容的解析问题: 在requests库中对于get到的对象有两个不同的方法。一个为res.text方法,另一个为res.content方法。实际操作中发现,res.text方法获取的数据写入.jpg文件后。jpg文件无法正常显示。查询资料后了解到,在使用Requests收到响应后,Requests会猜测响应的编码方式,用于在你调用 Response.text 方法时 对响应进行解码。Requests首先在HTTP头部检测是否存在指定的编码方式,如果不存在,则会使用 charade 来尝试猜测编码方式。而Response.content则是返回原始的数据。 故在爬取图片并且进行保存时应该采用res.content方法来将爬取到的数据写入文件,并且采用 *二进制* 的方式写入。 标签: none 相关文章推荐 上一篇: Centos 7.0 上配置redis及php拓展 下一篇: 量子云科技照片找回程序使用说明