簡體   English   中英

Scrapy:如何防止帶有條​​件項目值的收益請求?

[英]Scrapy: How to do I prevent a yield request with a conditional item value?

我正在解析一個 url 列表,我想避免在某些值的條件下保存一些 url 結果項。 我的代碼是這樣的:

start_urls = [www.rootpage.com]
def parse(self,response):
    item = CreatedItem()
    url_list = response.xpath('somepath').extract()
    for url in url_list:
        request =  scrapy.Request(item['url'],callback=self.parse_article)
        request.meta['item'] = item
        yield request

 def parse_article(self,response):
     item = response.meta['item']
     item['parameterA'] = response.xpath('somepath').extract()
     yield item

現在我希望在 item['parameterA'] 遵循條件的情況下,不需要“yield request”(這樣就不會保存此 url 的內容)。 我嘗試添加一個條件,如:

    if item['parameterA'] == 0:
       continue
    else:
       yield item

但正如預期的那樣,它不起作用,因為即使在執行請求之前,scrapy 也會繼續循環。

據我了解,您應該在parse_article方法中做出決定:

def parse_article(self,response):
    item = response.meta['item']
    item['parameterA'] = response.xpath('somepath').extract_first()

    if item['parameterA'] != "0":
        yield item

請注意extract_first()的使用和0周圍的引號。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM