一个Scrapy项目
我们创建一个名字是properties的项目:
$ scrapy startproject properties
$ cd properties
$ tree
.
├── properties
│ ├── __init__.py
│ ├── items.py
│ ├── pipelines.py
│ ├── settings.py
│ └── spiders
│ └── __init__.py
└── scrapy.cfg
2 directories, 6 files
先看看这个Scrapy项目的文件目录。文件夹内包含一个同名的文件夹,里面有三个文件items.py,pipelines.py和setting.py。还有一个子文件夹spiders,里面现在还是空的。后面的章节会详谈settings、pipelines和scrapy.cfg文件。
定义items
我们打开items.py。里面已经有代码,我们要对其修改,重新定义class PropertiesItem。
from scrapy.item import Item, Field
class PropertiesItem(Item):
# Primary fields
title = Field()
price = Field()
description = Field()
address = Field()
image_URL = Field()
# Calculated fields
images = Field()
location = Field()
# Housekeeping fields
url = Field()
project = Field()
spider = Field()
server = Field()
date = Field()
这是我们的第一段代码,要注意Python中的使用空格缩进的。每个字段名之前都是四个空格或是一个tab。空格符制定了这些项目是在PropertiesItem下面的。
编写爬虫
目前已经完成了一半,现在来写爬虫。一般的,每个网站,或一个大网站的一部分,只有一个爬虫。爬虫代码来完成UR2IM流程。
当然,可以用文本编辑器一句一句写爬虫,但更便捷的方法是用scrapy genspider命令,如下所示:
$ scrapy genspider basic web
使用模块中的模板“basic”创建了一个爬虫“basic”:
properties.spiders.basic
一个爬虫文件basic.py就出现在目录properties/spiders中。刚才命令中,生成一个名字为basic的默认文件,它的限制是在web上爬取URL。我们可以取消这个限制。这个爬虫使用的是basic这个模块。你可以用scrapy genspider -I查看所有的模板,然后用参数-t利用模板生成想要的爬虫,后面会介绍一个例子。
查看properties/spiders/basic.py文件,它的代码如下:
import scrapy
class BasicSpider(scrapy.Spider):
name = "basic"
allowed_domains = ["web"]
start_URL = (
'http://www.web/',
)
def parse(self, response):
pass