写出scrapy的基本组件及功能(Scrapy2.6Command)
『Scrapy 工具』Command line tool 用于控制 Scrapy ,是包括带有一组参数和选项的各种对象的命令。
基于 Python3 的 Scrapy 爬虫框架 中数据爬取过程中 Scrapy 工具提供的每个命令都接受一组不同的参数和选项。可以使用命令行完成对应设置内容。
Scrapy 版本:2.6
在这里插入图片描述
配置设置每个 scrapy 项目下都会生成一个 scrapy.cfg 配置文件,这部分内容自动生成不需要进行操作,未来配置一下项目中可能会进行调整。
在这里插入图片描述
Scrapy 默认项目结构使用命令行创建目录。
scrapy startproject myproject
默认生成目录结构。
在这里插入图片描述
根目录下的 scrapy.cfg 默认生成,包含设置中的配置模块。
在这里插入图片描述
Scrapy 共享项目根目录多个项目可以共享 scrapy.cfg 但是要设置项目需要settings。
在这里插入图片描述
默认使用default设置,可以使用命令行进行修改。
export SCRAPY_PROJECT=project2
scrapy settings --get BOT_NAME
语法结构
scrapy startproject <project_name> [project_dir]
示例: 创建项目名称为『myproject』的爬虫项目。
> scrapy startproject myproject
New Scrapy project 'myproject', using template directory 'D:\xxxx\Anaconda3_5.2.0\lib\site-packages\scrapy\templates\project', created in:
C:\Users\Lenovo\Desktop\xxxx\myproject
You can start your first spider with:
cd myproject
scrapy genspider example example.com
语法结构
scrapy genspider [-t template] <name> <domain or URL>
示例: 进入项目目录创建『myspider』的爬虫脚本。
cd [project_dir]
# 创建一个新的含作用域的Spider
> scrapy genspider myspider myspider.com
Created spider 'myspider' using template 'basic' in module:
myproject.spiders.myspider
# 创建一个新的不含作用域的Spider
> scrapy genspider myspider " "
Created spider 'myspider' using template 'basic' in module:
myproject.spiders.myspider
# 2.6版本新方式
> scrapy genspider -t crawl genspider genspider.com
Created spider 'genspider' using template 'crawl' in module:
myproject.spiders.genspider
语法结构
scrapy crawl <spider>
示例: 启动名称为『myspider』的爬虫脚本。
> scrapy crawl myspider
[ ... myspider starts crawling ... ]
语法结构
scrapy check [-l] <spider>
示例: 在保证有项目的前提下为『myspider』检查脚本错误。
> scrapy check myspider
----------------------------------------------------------------------
Ran 0 contracts in 0.010s
OK
语法结构
scrapy list
示例: 在保证有项目的前提下显示『myproject』下的全部爬虫列表。
> scrapy list
myspider
语法结构
scrapy edit <spider>
示例: 这个有点鸡肋,直接在IDE环境下编辑吧。
> scrapy edit spider1
语法结构
scrapy fetch <url>
示例: 相当于进行request获取页面的 txt 数据。
> scrapy fetch --nolog http://www.baidu.com
[ ... html content here ... ]
# 打印响应的 HTTP 标头
> scrapy fetch --nolog --headers http://www.baidu.com
[ ... responde headers ... ]
# 不遵循 HTTP 3xx 重新定向
> scrapy fetch --nolog --no-redirect http://www.baidu.com
语法结构
scrapy view <url>
示例: 使用默认浏览器中打开指定的 URL。
> scrapy view http://www.baidu.com
[ ... browser starts ... ]
在这里插入图片描述
shell 命令语法结构
scrapy shell [url]
示例:
> scrapy shell http://www.baidu.com
[ ... scrapy shell starts ... ]
在这里插入图片描述
parse 页面解析语法结构
scrapy parse <url> [options]
示例: 解析指定的url页面数据,进行数据的提取。需要完成完整的数据抓取操作,建议在IDE中进行操作。
> scrapy parse http://www.baidu.com/ -c parse_item
[ ... scrapy parse_item starts ... ]
语法结构
scrapy settings [options]
示例: 获取在settings.py中的设置信息。直接在IDE中查看比较方便。
> scrapy settings --get BOT_NAME
myproject
语法结构
scrapy runspider <spider_file.py>
示例: 可以在无项目的状态下直接用该命令执行spider脚本文件。
> scrapy runspider myspider.py
[ ... spider starts crawling ... ]
语法结构
scrapy version [-v]
示例: 查看当前使用的Scrapy框架版本。
> scrapy version
Scrapy 2.6.0
语法结构
scrapy bench
示例: 功能有些类似ping对应的IP地址,用于测试使用。
> scrapy bench
在这里插入图片描述
COMMANDS_MODULE 自定义自定义命令在 settings.py 中设置自定义命令模块,已有的命令行足够使用,基本无用。如果有需要自行在settings.py中添加。
- COMMANDS_MODULE = '项目名称.目录名称' 。
- 同级目录下添加 __init__.py 空文件。
COMMANDS_MODULE = 'myproject.commands'
自定义创建 crawlall.py 命令模块。
from scrapy.commands import ScrapyCommand
class Command(ScrapyCommand):
requires_project = True
def syntax(self):
# 业务逻辑
def short_desc(self):
# 业务逻辑
def run(self, args, opts):
# 业务逻辑
框架源码中在 setup.py 中添加。
from setuptools import setup, find_packages
setup(name='scrapy-mymodule',
entry_points={
'scrapy.commands': [
'my_command=my_scrapy_module.commands:MyCommand',
],
},
)
注册后进行验证是否添加成功。
> scrapy -h
,
免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com