scrapy shell
1 |
|
选择器
1 | html_str=""" |
Scrapy框架(二)
次级页面抓取及数据传递拼接(豆瓣电影)
1.详情页抓取(次级页面)的主要方法是get_detail 方法
1 | def get_detail(self,response): |
2.参数的传递拼接 的关键参数是 meta参数
spider文件
1 | # -*- coding: utf-8 -*- |
items文件
1 | import scrapy |
pipelines 文件
1 | import json |
settings 文件
此处删除了大部分注释
1 | # -*- coding: utf-8 -*- |
Scrapy shell
scrapy shell的作用是用于调试,
在项目 目录下输入scrapy shell https://movie.douban.com/top250 得到下列信息:
scrapy shell 会自动加载settings里的配置,即robots协议,请求头等都可以加载,从而发起请求可以得到正确的响应信息。
1 | [s] Available Scrapy objects: |
Scrapy shell 本质上就是个普通的python shell
只不过提供了一些需要使用的对象,快捷方法便于我们调试。
- 快捷方法:
shelp()
fetch(url[,redirect=True])
fetch(request)
view(response) - scrapy 对象:
crawler
spider
request
response
setting
Scrapy 选择器
Scrapy提供基于lxml库的解析机制,它们被称为选择器。
因为,它们“选择”由XPath或CSS表达式指定的HTML文档的某部分。
Scarpy选择器的API非常小,且非常简单。选择器提供2个方法来提取标签
xpath() 基于xpath的语法规则
css() 基于css选择器的语法规则
快捷方式
response.xpath()
response.css()
它们返回的选择器列表
提取文本:
selector.extract() 返回文本列表
selector.extract_first() 返回第一个selector的文本,没有返回None嵌套选择器
有时候我们获取标签需要多次调用选择方法(.xpath()或.css())
response.css(‘img’).xpath(‘@src’)Selector还有一个.re()方法使用正则表达式提取数据的方法。
它返回字符串。
它一般使用在xpath(),css()方法之后,用来过滤文本数据。
re_first()用来返回第一个匹配的字符串。
1 | html_str=""" |
scrapy.Spider
spider 的名称 name
一个字符串,用于定义此蜘蛛的名称。蜘蛛名称是Scrapy如何定位(并实例化)蜘蛛,因此它必须是唯一的。这是最重要的蜘蛛属性,它是必需的。
起始urls
蜘蛛将开始爬取的URL列表。因此,下载的第一页将是此处列出的页面。后续Request将从起始URL中包含的数据连续生成。
自定义设置
运行此蜘蛛时将覆盖项目范围的设置。必须将其定义为类属性,因为在实例化之前更新了设置。
1 | class Spider(object_ref): |
- logger
使用Spider创建的Python日志器。您可以使用它来发送日志消息。
1 |
|
from_crawler
这是Scrapy用于创建spider的类方法。一般不用覆盖。
1 |
|
start_requests() 开始请求
此方法必须返回一个iterable,其中包含第一个要爬网的请求。它只会被调用一次
1 | def start_requests(self): |
parse 默认回调函数方法
这是Scrapy在其请求未指定回调时处理下载的响应时使用的默认回调
1 | def parse(self, response): |
close 关闭spider
spider关闭时调用