我试图使用scrapy从不同的页面获取项目字段信息。
我想做什么:
完成所有链接后转到下一页并重复步骤1 - 3
我从下面找到了一些信息,但我仍然无法得到我想要的结果:
How can i use multiple requests and pass items in between them in scrapy python
目标:获取以下布局结果
我所做的是
我的项目课程
from scrapy.item import Item, Field
class myItems(Item):
info1 = Field()
info2 = Field()
info3 = Field()
info4 = Field()
我的蜘蛛类
from scrapy.http import Request
from myProject.items import myItems
class mySpider(scrapy.Spider):
name = 'spider1'
start_urls = ['main_link']
def parse(self, response):
items = []
list1 = response.xpath().extract() #extract all info from here
list2 = response.xpath().extract() #extract all info from here
for i,j in zip(list1, list2):
link1 = 'http...' + i
request = Request(link1, self.parseInfo1, dont_filter =True)
request.meta['item'] = items
yield request
link2 = 'https...' + j
request = Request(link2, self.parseInfo2, meta={'item':items}, dont_filter = True)
# Code for crawling to next page
def parseInfo1(self, response):
item = myItems()
items = response.meta['item']
item[info1] = response.xpath().extract()
item[info2] = response.xpath().extract()
items.append(item)
return items
def parseInfo2(self, response):
item = myItems()
items = response.meta['item']
item[info3] = response.xpath().extract()
item[info4] = response.xpath().extract()
items.append(item)
return items
我通过在终端上输入蜘蛛来执行蜘蛛:
> scrapy crawl spider1 -o filename.csv -t csv
我得到了所有字段的结果,但它们的顺序不正确。我的csv文件如下所示:
有谁知道如何在我的"目标"中获得结果。以上? 我很感激帮助。
由于
答案 0 :(得分:0)
没关系,我发现了自己的错误。我实例化了myItems类两次,这导致了2个新对象并给出了我得到的结果。