python - 在爬虫的不同功能中填充 scrapy 中的项目

标签 python web-scraping scrapy

我想做的是在 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

请注意,我在 init 函数中创建了一个 items up 实例。 这样,只有 item_id 字段被填充并传递给下一个解析器方法(parse_search_result)。 item.py 中的其他字段将在下一个函数中填充并再次传递给另一个解析器方法。 合法吗?

最佳答案

这正是 meta argument例如:

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

这里我们在 parse_page1 中定义了一个项目实例, 填充 main_url字段,然后将项目传递给 parse_page2meta字典。在 parse_page2 , other_url设置字段并返回项目。

希望这就是您要问的问题。

关于python - 在爬虫的不同功能中填充 scrapy 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25704705/

相关文章:

python - 对seaborn histplot 中的重叠条有一些指示

css - Beautiful Soup 无法区分 CSS 类

python - memcached 中的 Scrapy http 缓存存储

python - 获取 API 的内容 HTML

python - Scrapy只爬取一页

python - 元素的选择器(CSS 或 Xpath)

python - 在 python 中更改全局变量值的问题

Python - 不同的日志应该位于不同的文件中,但出现在同一个文件中

javascript - 如果 Nightmare waitTimeout超出,则调用函数

python - Pandas 重命名列