【问题标题】:updating list, set during iteration -- while loop更新列表,在迭代期间设置 -- while 循环
【发布时间】:2017-12-07 06:34:39
【问题描述】:

我有一个如下的scrapy脚本

1) 将navigation_path 收集到一个列表中并调用一个新的解析

g_next_page_list = []
g_next_page_set = set()

def parse(self,response):

    #code to extract nav_links

    for nav_link in nav_links:
        if nav_link not in g_next_page_set:
            g_next_page_list.append(nav_link)
            g_next_page_set.add(nav_link)

    for next_page in g_next_page_list:
        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse_start_url,  dont_filter=True, )

我将 parse_start_url 定义为:

def parse_start_url(self,response):

    #code to extract nav_links

    for nav_link in nav_links:
        if nav_link not in g_next_page_set:
            g_next_page_list.append(nav_link)
            g_next_page_set.add(nav_link)

但是,主解析中的全局列表和集合 (g_next_page_set, g_next_page_list) 没有被附加。我做错了什么?

提前致谢!

【问题讨论】:

  • v_next_page_list 是否与 g_next_page_list 相同,或者其中一个是错字?如果它们不同,请为v_next_page_list 提供一些示例数据。
  • @supersam654 很抱歉造成混乱。他们是一样的,我已经更新了我原来的帖子

标签: web-scraping scrapy


【解决方案1】:

你这里不用全局,你用 self.variable_name

g_next_page_list = []
g_next_page_set = set()

def parse(self,response):

    #code to extract nav_links

    for nav_link in nav_links:
        if nav_link not in v_next_page_set:
            self.g_next_page_list.append(nav_link)
            self.g_next_page_set.add(nav_link)

    for next_page in v_next_page_list:
        next_page = response.urljoin(next_page)
        yield scrapy.Request(next_page, callback=self.parse_start_url,  dont_filter=True, )


def parse_start_url(self,response):

    #code to extract nav_links

    for nav_link in nav_links:
        if nav_link not in v_next_page_set:
            self.g_next_page_list.append(nav_link)
            self.g_next_page_set.add(nav_link)

这应该可以正常工作

【讨论】:

    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-04
    • 2012-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多