为什么 process_links 不返回指向 Rule() 的任何链接?

Why is process_links not returning any links to the Rule()?

我试着理解Scrapy中规则的“process_links”回调选项。

这里的 post 已经有所帮助,但并没有完全解决我的问题: Example code for Scrapy process_links and process_request

我的目标:我需要删除 ?在 URL:

Rule(LinkExtractor(restrict_css='... CSS CODE ...'), process_links='delete_random_garbage_from_url', callback='parse_item', follow=True),

def delete_random_garbage_from_url(self, urls):
     for url in urls:
         print(url.url.split('?')[0])
         url.url = url.url.split('?')[0]

打印工作正常,所以我打印了所有没有参数的网址。 但是for循环中的第二行抛出这个错误:

returns: TypeError: 'NoneType' 对象不可迭代

我错过了什么吗?感谢您的帮助。

我找到了解决方案。 yield link 丢失了。 因此,如果有人正在寻找一种在传递 URL 之前对其进行过滤的方法,请看这里:

Rule(LinkExtractor(restrict_css='WHAT ARE YOU LOOKING FOR'), process_links='delete_random_garbage_from_url', callback='parse_item', follow=True),
    
def delete_random_garbage_from_url(self, links):
    for link in links:
        link.url = link.url.split('?')[0] #do what you need to do, here remove everything from URL after the ?
        yield link

感谢您的帮助@tomjn