爬虫-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"
把q=python换成q=区块链,
这里%E5%8C%BA%E5%9D%97%E9%93%BE就是区块链
那么怎么获得呢?有俩种方法1.通过字符串的encode 2.用urllib带的parse
代码: s = "区块链"
s.encode("utf-8")
或者
from urllib import parse
parse.urlencode({"q"="区块链"})
那么头信息怎么修改呢?
这里面头信息:
"User_Agent" = ”Python-urllib/3.7"
那我们可以如何修改呢?这里需要用到request中的Request
这里应该对urllib库有个大概的了解,那么可以做一个简单的项目呢?
爬虫豆瓣电影top250的海报
关键点实现:
1.请求页面信息(使用urllib库)
2.使用正则表达式:提取海报地址和电影名称(使用re库)
3.下载海报图片
4.查找下一页
下载海报图片,这里举一个例子
,
查找下一页:
接下来就是将上面的散乱的代码整理顺序实现,或者使用函数实现,或者使用类实现
推荐使用面向对象的方法来实现,就是使用类来实现。
定义类:doubanposterspider
明确类的输入和输出:输入网址,路径
输出就是图片