爬虫-urllib模块

这库是用来请求URL的,用来获取服务器资源

常用的模块如下:

urllib.request 处理各种协议扩展库

urllib.reponse  应答类

urllib.parse 解析

urllib.error 用来处理异常

代码:

from urllib import request  # 导入request模块,可以发起请求

# 首先定义URL

url = "http://httpbin.org/get"

req = request.urlopen(url) # req是一个httpresponse类型,那么如何获取内容呢?可以采用read方法

content = req.read() # 返回值是byte类型,可以解码转换成字符串

content.decode("utf-8")

 

# 应答状态码介绍

1XX :表示请求处理

2XX:表示成功(200)

3XX:重新定向

4xx:没有资源,(404,405)

5XX:服务器出现错误

 

URL构建和请求头处理

url构建 

url = "https://www.so.com/s?ie=utf-8&src=hao_360so_b&shb=1&hsid=da7a6a3574d2b876&q=python"

爬虫-urllib模块

把q=python换成q=区块链,

这时候的url="https://www.so.com/s?ie=utf-8&src=hao_360so_b&shb=1&hsid=da7a6a3574d2b876&q=%E5%8C%BA%E5%9D%97%E9%93%BE"

这里%E5%8C%BA%E5%9D%97%E9%93%BE就是区块链

那么怎么获得呢?有俩种方法1.通过字符串的encode 2.用urllib带的parse

代码: s = "区块链"

s.encode("utf-8")

爬虫-urllib模块

或者

from urllib import parse

parse.urlencode({"q"="区块链"})

爬虫-urllib模块

爬虫-urllib模块

 

那么头信息怎么修改呢?

爬虫-urllib模块

这里面头信息:

"User_Agent" = ”Python-urllib/3.7"

那我们可以如何修改呢?这里需要用到request中的Request

爬虫-urllib模块

 

这里应该对urllib库有个大概的了解,那么可以做一个简单的项目呢?

爬虫豆瓣电影top250的海报

 

 

爬虫-urllib模块

 

爬虫-urllib模块

关键点实现:

1.请求页面信息(使用urllib库)

2.使用正则表达式:提取海报地址和电影名称(使用re库)

3.下载海报图片

4.查找下一页

爬虫-urllib模块

下载海报图片,这里举一个例子

爬虫-urllib模块

查找下一页:

爬虫-urllib模块

接下来就是将上面的散乱的代码整理顺序实现,或者使用函数实现,或者使用类实现

推荐使用面向对象的方法来实现,就是使用类来实现。

定义类:doubanposterspider

明确类的输入和输出:输入网址,路径

输出就是图片

爬虫-urllib模块