簡體   English   中英

Scrapy empty.json 文件返回

[英]Scrapy empty .json file return

我正在嘗試從網站獲取數據。

一切似乎都是正確的(在 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

你可以幫幫我嗎? 提前抱歉,這是我的第一個程序...

您忘記將 contains() function 添加到 xpath 中:

//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

++++ 編輯 ++++ 代碼運行良好,但蜘蛛沒有保存在正確的文件中......感謝您的幫助!

暫無
暫無

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

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