标签:bsp json 数据库 self star 固定 gen strong .json
Scrapy项目结构
scrapy.cfg
myproject/
__init__.py
items.py
pipelines.py
settings.py
spiders/
__init__.py
spider1.py
spider2.py
...
文件介绍:
项目步骤
一、明确目标
例如:
import scrapy
class BeautyItem(scrapy.Item):
name = scrapy.Field()
age = scrapy.Field()
img = scrapy.Field()
二、制作爬虫
scrapy genspider spider_name "allowed_domains"
将在myproject/spiders/目录下创建一个名为‘spider_name‘的爬虫文件,并制定爬虫域的范围(allowed_domains,用于限定爬取的数据来源不超过这个域名范围)
import scrapy
class Spider_name(scrapy.Spider):
name = "spider_name"
allowed_domains = ["allowed_domains"]
start_urls = [‘http://www.allowed_domains‘]
def parse(self, response):
pass
其实也可以由我们自行创建爬虫文件并编写上面的代码,只不过使用命令可以免去编写固定代码的麻烦
要创建一个Spider,你必须用scrapy.Spider类创建一个子类,并确定了两个强制的属性和一个方法
保存数据
scrapy保存信息的最简单的方法主要有四种,-o输出指定格式的文件,命令如下:
# json格式 scrapy crawl spider_name -o file_name.json # json line格式 scrapy crawl spider_name -o file_name.jsonl # csv逗号表达式,可用excel打开 scrapy crawl spider_name -o file_name.csv # xml格式 scrapy crawl spider_name -o file_name.xml
Item Pipelines
当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item。
每个Item Pipeline都是实现了简单方法的Python类,比如决定此Item是丢弃还是存储。以下是Item Pipeline的一些典型应用:
编写Item pipeline很简单,item pipeline组件是一个独立的Python类,其中process_item()方法必须实现
import something
class somethingPipeline(Object):
def __init__(self):
# 可选实现,做参数初始化(如打开保存目录文件)等
# do something
def process_item(self, item, spider):
# item(Item对象) - 被爬取的item
# spider(Spider对象) - 爬取该item的spider
# 这个方法必须实现,每个item pipeline组件都需要调用该方法
# 必须返回一个Item对象,被丢弃的item将不会被之后的pipeline组件锁处理
return item
def open_spider(self, spider):
# spider(Spider对象) - 被开启的spider
# 可选实现,当spider被开启时被调用
def close_spider(self, spider):
# spider(spider对象) - 被关闭的spider
# 可选实现,当spider被关闭时被调用
标签:bsp json 数据库 self star 固定 gen strong .json
原文地址:http://www.cnblogs.com/keqipu/p/7309266.html