Scrapy爬虫的使用
步骤
- 创建一个工程和spider模版
- 编写spider
- 编写item pipeline模版
- 进行优化策略的配置
Scrapy爬虫的数据类型: - Request
包含6个属性和方法
.url Request对应的请求URL地址
.method 对应的请求方法,‘GET’ ‘POST’等
.headers 字典类型风格的请求头
.body 请求内容主题,字符串类型
.meta 用户添加的扩展信息,在Scrapy内部模块间传递信息使用
.copy() 复制该请求 - Response
.url Response 对应的URL地址
.status HTTP状态码,默认是200
.headers Response 对应的头部信息
.body Response 对应的内部信息,字符串类型
.flag 一组标记
.request 产生Response 类型对应的Request对象
.copy() 复制该响应 - Item
是从HTML页面提取的信息内容
由Spider生成,由Item Pipeline 处理
类字典类型
提取网络相关信息后,将生成键值对
提取信息的方法
- Beautiful Soup
- Lxml
- re
- XPath Selector
- css selector
使用格式:
request.get(url, params = None, **kwargs)
url:拟获取页面的url链接
Params:utl中的额外参数,字典或者字节流方式
**kwargs:12个控制访问的参数
requests为Response对象,包含爬虫返回的全部内容
Response 对象的属性
- r.status_code
HTTP请求的返回状态,200表示链接成功,404表示失败 - r.text
HTTP 响应内容的字符串形式,即,url对应的页面内容 - r.encoding
从HTTP headers中猜测的响应内容编码方式
如果header中不存在charset,则认为编码为ISO-8859-1,但这种编码不能解析中文 - r.apparent_encoding
从网页内容中分析出响应方式编码方式 - r.content
HTTP响应内容的二进制形式
理解Requests库的异常
- requests.ConnectionError
网络链接错误异常,如DNS查询失败、拒绝链接等 - request.HTTPError
HTTP错误处理
r.raise_for_status() 判断返回的状态类型是不是200 - requests.URLRequired
URL缺失异常 - requests.TooManyRedirects
超过最大重定向次数,产生重定向异常 - requests.ConnectTimeout
连接远程服务器超时异常 - requests.Timeout
请求URL超时,产生超时异常
Requests 库的7个主要方法
- requests.requests()
构造一个请求,支撑以下各方法的基础方法 - requests.get()
获取HTML网页的主要方法,对应HTTP的GET - requests.head()
获取HTML网页头信息的方法,对应HTTP的HEAD - requests.post()
向HTML网页提交POST请求的方法,对应HTTP的POST - requests.put()
向HTML网页提交PUT请求的方法,对应HTTP的PUT - requests.patch()
向HTML网页提交局部修改请求,对应HTTP的PATCH - requests.delete()
向HTML页面提交删除请求,对应HTTP的DELETE