scrapy1
Posted lpapython
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了scrapy1相关的知识,希望对你有一定的参考价值。
scrapy项目默认结构
scrapy.cfg myproject __init.py items.py middlewares.py pipelines.py settings.py spiders __init.py spider1.py spider2.py
一、scrapy 命令行
- scrapy.cfg
该文件可以设置项目的python模块名称
默认
[settings]
default = myproject.settings
多个项目共享根目录 通过使用SCRAPY_PROJECT指定使用的项目
1.项目的创建
1)scrapy startproject (project) [project_dir] 可在project_dir目录下创建项目
2)cd project_dir
3)scrapy crawl genspider spidername domain 创建一个默认的spider
scrapy genspider -t crawl spidername domain 创建一个CrawlSpider
2.全局命令
·startproject 创建项目
·genspider 调用爬虫类型
·settings 设置
·runspider 运行spider.py文件
·shell scrapy shell url 用于调试解析
·fetch 使用下载器下载给定的url,并将内容标准输出
·view 查看网页源代码
·version 查看版本
3.项目命令
·crawl 开始爬取
·check 检查爬虫其内部函数
·list 查看所有爬虫名称,只有爬虫文件目录下存在__init__.py,此爬虫名才会显示
·edit 快捷编辑爬虫
·parse 解析
·bench 基准测试(本地性能)
4.自定义项目命令
可在settings中添加COMMANDS_MODULE="myproject.commands"来添加自定义项目命令
二、SPIDER
1.运行流程
生成初始请求url,指定回调
1)一个请求通过调用start_request()Request发送请求,默认回调为parse方法,
2)在回调函数中解析下载的内容,并打包成item对象返回,或者返回Request对象继续爬取请求
2.scrapy.spider
默认爬虫类,所有的爬虫都必须继承这个类
只提供start_request()来处理start_urls
1)name 爬虫名
2)allowed_domains 爬虫网页的域名,若启用offsetMiddleware,则不请求不属于该域名下的url
3)start_urls 指定初始请求url
4)custon_settings 设置
5)crawler from_crawler()在初始化类后,设置此属性,并且绑定到spider实例中
6)settings crawler.settings 获取爬虫的设置
7)logger 日志
8)from_crawler(crawler, *args, **kwargs) 可用来设置属性
9)start_request() 初始请求
10)parse 回调函数
11)closed 关闭爬虫时调用
3.scrapy.spiders.CrawlSpider
爬取具有一定规则的网站,根据rules进行追踪链接
1)rules url规则
2)parse_start_url(response) 处理初始响应
rule:
scrapy.spiders.Rule
1)link_extractor 链接提取器对象,每个链接都会用于生成一个Request对象
2)callback 回调函数
3)cb_kwargs 回调函数参数
4)follow 指定是否从此页面继续跟进链接规则
5)process_links
三、解析工具
scrapy 自带解析选择器selector xpath选择器,css选择器
scrapy.selector.Selector类中
参数:
response htmlResponse或XmlResponse对象
text 在response不可使用的时候,使用的unicode字符串和utf-8编码文本
type 选择器类型,"html" "xml" None 为None时会自动选择最佳类型
方法:
xpath() xpath选择器
css() css选择器
get() 返回第一个元素
getall() 返回所有元素
attrib 返回基础元素属性字典
re() 正则
re_first() 正则匹配并返回第一个字符串
四、items、item_loaders
items 定义输出数据格式
item_loaders 对items进行填充
使用方式:
ItemLoader(item=items对象, response=预处理response)
添加数据方法 add_xpath() xpath选择器
add_css() css选择器
add_value() 值添加
输入和输出处理器(Input and Output processors)
processors类
Join 以特定字符连接两个或多个字符串
MapCompose 一个或多个数据进行一个或多个函数处理,返回None,则抛弃
Compose 一个数据进行一个或多个函数处理,返回None,则抛弃
SelectJmes JSON中取值
input_processor在收集到值后调用
output_processor在数据yeild之后调用
五、item pipeline
process_item 处理items
open_spider 打开爬虫时调用
close_spider 关闭爬虫时调用
from_crawler 创建新实例
以上是关于scrapy1的主要内容,如果未能解决你的问题,请参考以下文章