私はscrapy
が初めてで、タスクは簡単です:
特定のeコマースWebサイトの場合:
すべてのウェブサイトページをクロールする
製品ページを探す
URLが製品ページを指している場合
アイテムを作成する
アイテムを処理してデータベースに保存する
スパイダーを作成しましたが、製品は単純なファイルに印刷されています。
私の質問は、プロジェクト構造についてです:スパイダーでアイテムを使用する方法とパイプラインにアイテムを送信する方法ですか?
アイテムとパイプラインを使用したプロジェクトの簡単な例を見つけることができません。
さて、アイテムの主な目的は、クロールしたデータを保存することです。 scrapy.Items
は基本的に辞書です。アイテムを宣言するには、クラスを作成し、scrapy.Field
を追加する必要があります。
import scrapy
class Product(scrapy.Item):
url = scrapy.Field()
title = scrapy.Field()
これで、製品をインポートして、スパイダーで使用できます。
高度な情報については、ドキュメントを確認してください here
最初に、custom pipeline
を使用するようスパイダーに指示する必要があります。
settings.pyファイルで:
ITEM_PIPELINES = {
'myproject.pipelines.CustomPipeline': 300,
}
これで、パイプラインを記述して、アイテムを操作できます。
pipeline.pyファイルで:
from scrapy.exceptions import DropItem
class CustomPipeline(object):
def __init__(self):
# Create your database connection
def process_item(self, item, spider):
# Here you can index your item
return item
最後に、spiderで、アイテムが満たされたらyield
する必要があります。
spider.py例:
import scrapy
from myspider.items import Product
class MySpider(scrapy.Spider):
name = "test"
start_urls = [
'http://www.exemple.com',
]
def parse(self, response):
doc = Product()
doc['url'] = response.url
doc['title'] = response.xpath('//div/p/text()')
yield doc # Will go to your pipeline
これがお役に立てば幸いです、ここにpipelinesのドキュメントがあります: Item Pipeline