如果我从请求Scrapy得到错误的数据,如何删除整个响应?

tf7tbtn2  于 2023-03-23  发布在  其他
关注(0)|答案(1)|浏览(127)

我刮的页面包含:name,url1,url2 = 25项。在Url2中,我有一个字符串,包含这样的内容:“q=Dummy&bla=h”或“q=Dummy&bla=g”或“q=Dummy&bla=j
所以我需要检查是否有“q=Dummy&bla=h”我们继续,否则我们删除name,url和url2
有“q=Dummy&bla=g”,“q=Dummy&bla=j”,然后转到下一个名称,url,url2。
我应该在哪里创建if else语句,这样我不仅可以删除url2,而且可以删除nameurl1
结果我们得到:21个名称,21个url1和21个url2,只包含“q=Dummy&bla=h”。
我确信我必须在www.example.com上写一些代码middlewares.py,但不知道在哪里。
请不要代码只需要一点提示,也许在DownloaderMiddleware类上我不知道。示例

class ExampleSpider(scrapy.Spider):
    name = "Example"
    allowed_domains = ["example.com"]
    start_urls = ["https://www.example.com/page=1"]
    
    def parse(self, response):
        for selects in response.css('div.scrapdata'):
            il = ItemLoader(item=ExampleItem(), selector=selects, response=response)
            
                il.add_css('name', 'div.name')
                il.add_css('img_link', 'img::attr(src)')
                il.add_css('page_name', 'a::attr(href)')
                yield il.load_item()

需要检查这个:

if "q=Dummy&bla=h" in il.add_css('page_name', 'a::attr(href)'):
    WE parse name, img_link, page_name
else:
    We go to next name, img_link, page_name

JSON中的数据:

{
"name":["Alex"], "img_link":"example.com/pics/Alex.jpg", 
 "page_name":"example.com/q=Dummy&bla=h/Alex.html"
}
7cjasjjr

7cjasjjr1#

如果你像这样丢弃了5个URL:

example.com/q=Dummy&bla=h/Alex.html"
example.com/q=Dummy&bla=g/Bart.html"
example.com/q=Dummy&bla=h/Chris.html"
example.com/q=Dummy&bla=j/Diego.html"
example.com/q=Dummy&bla=h/Evan.html"

并且想要删除包含bla=j或bla=g的URL:

example.com/q=Dummy&bla=j/Diego.html
example.com/q=Dummy&bla=g/Bart.html

你需要编辑管道,检查文档管道,例如谢谢你的回答

相关问题