好东西要学习
0 1 2 3 4 5 |
// 命令行安装框架 >> pip install Scrapy // 命令行创建项目 // scrapy startproject [项目英文名称] >> scrapy startproject tutorial |
项目目录结构
0 1 2 3 4 5 6 7 8 9 |
tutorial/ scrapy.cfg tutorial/ __init__.py items.py pipelines.py settings.py spiders/ __init__.py ... |
这些文件分别是:
scrapy.cfg
: 项目的配置文件tutorial/
: 该项目的python模块。之后您将在此加入代码。tutorial/items.py
: 项目中的item文件.tutorial/pipelines.py
: 项目中的pipelines文件.tutorial/settings.py
: 项目的设置文件.tutorial/spiders/
: 放置spider代码的目录.
接下来,进入到项目目录中:
0 |
cd myproject |
创建一个新的spider:
0 1 |
// scrapy genspider 【定义英文名称】 【被采集地址host】 >> scrapy genspider mydomain mydomain.com |
可用的工具命令(tool commands)
可以通过运行命令来获取关于每个命令的详细内容:
0 |
scrapy <command> -h |
您也可以查看所有可用的命令:
0 |
scrapy -h |
Scrapy提供了两种类型的命令。一种必须在Scrapy项目中运行(针对项目(Project-specific)的命令),另外一种则不需要(全局命令)。全局命令在项目中运行时的表现可能会与在非项目中运行有些许差别(因为可能会使用项目的设定)。
全局命令:
项目(Project-only)命令:
自定义项目命令
您也可以通过 COMMANDS_MODULE
来添加您自己的项目命令。您可以以 scrapy/commands 中Scrapy commands为例来了解如何实现您的命令。
COMMANDS_MODULE
Default: ''
(empty string)
用于查找添加自定义Scrapy命令的模块。
例子:
0 |
COMMANDS_MODULE = 'mybot.commands' |
项目文件 ./items.py
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/usr/bin/env python # -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://doc.scrapy.org/en/latest/topics/items.html import scrapy class DmozItem(scrapy.Item): # define the fields for your item here like: name = scrapy.Field() article = scrapy.Field() last_updated = scrapy.Field(serializer=str) if __name__ == '__main__': d = DmozItem() print(d.fields) # {'article': {}, 'last_updated': {'serializer': <type 'str'>}, 'name': {}} print('=' * 30) pass |
其实“name”、“article”、“last_updated”并不是类DmozItem的属性,而是被包含在了类属性fields中。
开爬一个 dmoz
0 |
scrapy crawl dmoz |
调试命令
0 1 |
// 检查有多少活跃(alive)对象 prefs() |