0
ニュースサイトをスクラップします。すべてのニュースについて、内容と多くのコメントがあります。私は2つのアイテム、1つはコンテンツ、もう1つは複数のコメントを持っています。 コンテンツに問題があり、複数のコメントが異なるリクエストとして発生します。私はニュースの内容を望んでおり、その複数のコメントは、一緒に、または1つとして、収穫または返されるべきです。パイプラインのタイミングや注文は私にとって重要ではありません。アイテムでスキル収量のために別の項目を接続
ファイル:
スパイダー、ニュースの内容、およびその多くのコメントでclass NewsPageItem(scrapy.Item):
title = scrapy.Field()
date = scrapy.Field()
hour = scrapy.Field()
image = scrapy.Field()
image_url = scrapy.Field()
top_content = scrapy.Field()
parag = scrapy.Field()
#comments = scrapy.Field()
comments_count = scrapy.Field()
class CommentsItem(scrapy.Item):
id_ = scrapy.Field()
username = scrapy.Field()
firstname = scrapy.Field()
lastname = scrapy.Field()
email = scrapy.Field()
ip = scrapy.Field()
userid = scrapy.Field()
date = scrapy.Field()
comment_text = scrapy.Field()
comment_type_id = scrapy.Field()
object_id = scrapy.Field()
yes = scrapy.Field()
no = scrapy.Field()
が接続されていません。
class NewsSpider(scrapy.Spider):
...
def parse(self, response):
for nl in news_links:
yield scrapy.Request(url=nl, callback=self.new_parse)
yield scrapy.Request(url=url, callback=self.comment_parse)
def new_parse(self,response):
item = BigParaItem()
item['title'] = response.xpath(...).extract()
...
yield item
def comment_parse(self,response):
data = json.loads(response.body.decode('utf8'))
for comment in data.get('data', []):
item = CommentsItem()
item['id_'] = comment.get('Id')
...
yield item
パイプライン:
class NewsPagePipeline(object):
def process_item(self, item, spider):
return item
class CommentsPipeline(object):
def process_item(self, item, spider):
return item
はどうやってアイテムを接続することができます収穫時にネストされますか?
は、それが完全に働いた、ありがとうございました:)) –