Scrapy:如何在蜘蛛中使用项目以及如何将项目发送到管道?
Scrapy: how to use items in spider and how to send items to pipelines?
我是 scrapy
的新手,我的任务很简单:
对于给定的电子商务网站:
抓取所有网站页面
查找产品页面
如果 URL 指向产品页面
创建项目
处理项目以将其存储在数据库中
我创建了蜘蛛,但产品只是打印在一个简单的文件中。
我的问题是关于项目结构:如何在蜘蛛中使用项目以及如何将项目发送到管道?
我找不到使用项和管道的项目的简单示例。
- 如何在我的蜘蛛中使用物品?
嗯,项目的主要用途是存储您爬取的数据。 scrapy.Items
基本上是字典。要申报您的物品,您必须创建一个 class 并在其中添加 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
希望这对您有所帮助,这是 管道 的文档:Item Pipeline
我是 scrapy
的新手,我的任务很简单:
对于给定的电子商务网站:
抓取所有网站页面
查找产品页面
如果 URL 指向产品页面
创建项目
处理项目以将其存储在数据库中
我创建了蜘蛛,但产品只是打印在一个简单的文件中。
我的问题是关于项目结构:如何在蜘蛛中使用项目以及如何将项目发送到管道?
我找不到使用项和管道的项目的简单示例。
- 如何在我的蜘蛛中使用物品?
嗯,项目的主要用途是存储您爬取的数据。 scrapy.Items
基本上是字典。要申报您的物品,您必须创建一个 class 并在其中添加 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
希望这对您有所帮助,这是 管道 的文档:Item Pipeline