Scrapy空.json文件返回

eeq64g8w  于 2022-12-13  发布在  其他
关注(0)|答案(1)|浏览(106)

我正在尝试从网站获取数据。
一切似乎都是正确的(在shell上测试了xpath):

>>> scrapy shell "https://stopcovid19.fr/"

>>> for cat in response.xpath("//ul[@class='level0 submenu']/li/a"):
    {
        'name': cat.xpath("./span/text()").get(),
        'link': cat.xpath("./@href").get(),
    }

代码如下:

import scrapy

class ToScrapeSpiderXPath(scrapy.Spider):
    name = 'categories'
    start_urls = ['https://stopcovid19.fr']

    def parse(self, response):

        for cat in response.xpath("//ul[@class='level0 submenu']/li/a"):
            yield {
                'name': cat.xpath("./span/text()").get(),
                'link': cat.xpath("./@href").get(),
            }

但是当我尝试用下面的代码在一个json文件上得到结果时,这个文件是空的。

scrapy crawl categories -O categories.json

你能帮我吗?事先抱歉,这是我第一个节目...

cyvaqqii

cyvaqqii1#

您忘记在xpath中添加contains()函数:

//ul[contains(@class, 'level0 submenu')]

这样试试看:

for cat in response.xpath("//ul[contains(@class, 'level0 submenu')]/li/a"):
    ...

所以蜘蛛看起来像:

import scrapy

class ToScrapeSpiderXPath(scrapy.Spider):
    name = 'categories'
    start_urls = ['https://stopcovid19.fr']

    def parse(self, response, **kwargs):
        for cat in response.xpath("//ul[contains(@class, 'level0 submenu')]/li/a"):
            yield {
                'name': cat.xpath("./span/text()").get(),
                'link': cat.xpath("./@href").get(),
            }

并运行如下脚本:

scrapy crawl categories -o file.json

++++ EDIT ++++代码运行良好,但蜘蛛没有保存在正确的文件中...谢谢您的帮助!!

相关问题