meh*_*ix_ 1 python scrapy web-scraping scrapy-spider
我想要做的是在spider.py文件中的不同函数中填充item.py中定义的项目字段,例如在发出所有请求的start_requests函数中,我想填充一个名为“item_id”的字段'。
def start_requests(self):
forms = []
for item in self.yhd_items:
self.item["item_id"] = item.ItemCode
forms.append(FormRequest(self.base_url + item.ItemCode, method='GET',
callback = self.parse_search_result))
return forms
Run Code Online (Sandbox Code Playgroud)
请注意,我在 init 函数中创建了一个项目实例。这样就只填充 item_id 字段并传递给下一个解析器方法(parse_search_result)。item.py 中的其他字段将在下一个函数中填充并再次传递给另一个解析器方法。会是合法的吗?
这正是meta争论的原因,例如:
def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request
def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item
Run Code Online (Sandbox Code Playgroud)
这里我们在 in 中定义了一个 item 实例parse_page1,填充main_url字段,然后将 item 传递给parse_page2inmeta字典。在 中parse_page2,other_url设置字段并返回项目。
希望这就是你要问的。