【spider】05--定向爬取【图片爬虫】

文章导读:

这个是我自己动手开发的。我首先使用书上python3.5版本环境进行测试,然后使用我们学的python2.7进行论证。因为只是环境的问题,我相信都会得到解决,而且能更好的理解两者环境之间的区别。

在实际操作过程中,发现书籍跟写的代码之间的区别,发现写出代码的形式不一样,并且放在pycharm运营的时候总是觉得很诡异。那么我就从这讲解一下urllib和urllib2,同时做个小项目。

本文解决问题:

1、图片爬虫的实例分析

2、urllib和urllib2的区别以及案例

3、回顾简单python指令

urllib和urllib2的区别:

1、urllib只能根据url爬取,不能设置头信息,但可以对url进行编码;urllib2可以设置request请求头信息

2、urllib2模块直接导入就可以用,在python3中urllib2被改为urllib.request


======================1、图片爬虫梳理:======================

1、目标:进行京东商城手机图片的爬取

2、分析:肯定要通过循环遍历的方式,

以下是第一页、第二页、第三页的url地址:

发现是通过url进行识别的,即GET请求,其中page字段是有规律的page对应的数字是2n-1,s这个其实不管用,会跟着动态变,只有page有规律。

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&cid2=653&cid3=655&page=1&s=46&click=0

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&cid2=653&cid3=655&page=3&s=57&click=0

https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&qrst=1&rt=1&stop=1&vt=2&wq=%E6%89%8B%E6%9C%BA&cid2=653&cid3=655&page=5&s=113&click=0

3、通过

urllib.request.urlretrieve()      将对应链接图片地址保存到本地

4、信息过滤第一次,只要中间商品列表中的数据

查看源代码,锁定开始标志和结束标志

<div class="p-img">

<div class="p-scroll">

pat1='<div class="p-img".+?<div class="p-scroll">'    过滤构造,那么我们只取中间的代码,将外面的代码进行过滤

5、信息过滤第2次,提取图片链接

我们发现格式是一样的,除了图片地址不一样。我们就要构造一个提取图片的函数

pat2 = '<img class="err-product" data-img="1" src="//(.+?\.jpg)" width="220" height="220">'

代码如下:






============================2、区别案例=============================

urllib2里面没有urlretrieve方法,所以用这种方法进行下载文件到本地是不可取的

我们发现在python2中,内置的有urllib、urllib2,只是说urllib2不具备使用urlretrieve方法进行下载文件到本地

urllib.encode()的使用

urlencode()里面必须是字典类型

# _*_ coding:utf-8 _*_

import urllib

dic = {'derek':'编码'}

print urllib.urlencode(dic)       #derek=%E7%BC%96%E7%A0%81

m = urllib.urlencode(dic)

print urllib.unquote(m)           #derek=编码

一般HTTP请求提交数据,需要编码成 URL编码格式,然后做为url的一部分,或者作为参数传到Request对象中。

GET请求一般用于我们向服务器获取数据,比如说,我们用百度搜索知乎:https://www.baidu.com/s?wd=知乎

发现GEThttps://www.baidu.com/s?wd=%E7%9F%A5%E4%B9%8E,后面是一个长长的字符串,urldecode后发现就是知乎

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容