Scrapy Spider会记录我需要的文本(也可以在Scrapy Shell中使用),但不会将它们写入JSON文件

我对scrapy不熟悉。我正在尝试从以下页面抓取评论:https://utopia.de/produkt/j-j-darboven-cafe-intencion/,所以我创建了这个蜘蛛:

import scrapy

class UtopiaSpider(scrapy.Spider):
    name = 'utopia'
    allowed_domains = ['utopia.de']
    start_urls = ['https://utopia.de/produkt/j-j-darboven-cafe-intencion/']
    def parse(self,response):
        self.log("I just visited: " + response.url)
        reviews = response.css('div.commenttext p:nth-child(1)::text').extract()
        self.log(reviews)
        yield
        {
        "review":reviews
        }

当我尝试使用以下代码在scrapy shell中抓取评论时:

scrapy shell https://utopia.de/produkt/j-j-darboven-cafe-intencion/
In [1]:  response.css('div.commenttext p:nth-child(1)::text').extract()

我能够看到评论:

Out[1]:
['Wir haben für unseren Vollautomaten wirklich lange probiert,und kommen immer wieder zu diesem. Die Bohnen sind alle ganz und nicht zu dunkel,also nicht billig überröstet. Der Geschmack ist wirklich super ohne bittere Note. Im Rewe gibt es immer mal wieder Sonderangebote der Marke,da kann man bis zu 3 € pro Packung sparen. Hier greifen wir dann immer zu. Der Kaffee lässt Genuss zu ohne schlechtes Gewissen.','Der Kaffee ist große Klasse,da gibt es nachwievor nix zu meckern dran. Aber Inhalt ist nicht alles. Die letzte Verpackung hat in der Papierhülle jetzt Plastik mit reingemischt. Ich frag mich,wozu das gut sein soll. Für mich ein Grund zum Punkteabzug.','Ich kehre seit Jahren nach Ausflügen zu anderen Kaffeesorten immer wieder zu diesem zurück,weil er mir am besten schmeckt. Ich mag Kaffee am liebsten mit einer „normalen“ Kaffeemaschine gekocht und nicht sehr stark. Dafür ist er super. Er ist nicht sehr stark geröstet und hat einen schönen Mokkageschmack.','bereits seit sechs Jahren beginne ich den Tag mit diesem Kaffee,und er schafft es täglich aufs Neue,mich zu begeistern. Ich konsumiere ausschließlich fair produzierten Kaffee,um mit einem guten Gewissen in den Alltag starten zu können. Meine Wahl wird weiterhin auf diesen fallen. �']

我还可以在蜘蛛网中以self.log(reviews)行记录评论

2019-11-06 15:44:06 [scrapy.core.engine] DEBUG: Crawled (200) <GET https://utopia.de/produkt/j-j-darboven-cafe-intencion/> (referer: None)
2019-11-06 15:44:06 [utopia] DEBUG: I just visited: https://utopia.de/produkt/j-j-darboven-cafe-intencion/
2019-11-06 15:44:06 [utopia] DEBUG: Wir haben für unseren Vollautomaten wirklich lange probiert,da kann man bis zu 3 € pro Packung sparen. Hier greifen wir dann immer zu. Der Kaffee lässt Genuss zu ohne schlechtes Gewissen.
2019-11-06 15:44:06 [utopia] DEBUG: Der Kaffee ist große Klasse,wozu das gut sein soll. Für mich ein Grund zum Punkteabzug.
2019-11-06 15:44:06 [utopia] DEBUG: Ich kehre seit Jahren nach Ausflügen zu anderen Kaffeesorten immer wieder zu diesem zurück,weil er mir am besten schmeckt. Ich mag Kaffee am liebsten mit einer „normalen“ Kaffeemaschine gekocht und nicht sehr stark. Dafür ist er super. Er ist nicht sehr stark geröstet und hat einen schönen Mokkageschmack.
2019-11-06 15:44:06 [utopia] DEBUG: bereits seit sechs Jahren beginne ich den Tag mit diesem Kaffee,um mit einem guten Gewissen in den Alltag starten zu können. Meine Wahl wird weiterhin auf diesen fallen. �
2019-11-06 15:44:06 [scrapy.core.engine] INFO: Closing spider (finished)

但是我的蜘蛛程序的yield部分似乎不起作用,因为当我运行此命令时,我最终得到一个空的JSON文件:

scrapy runspider utopia.py -o utopia.json

我有一种预感,评论是用Javascript显示的,但我对为什么文本仍能正确记录但无法在JSON文件中返回感到困惑。

jeseca8897 回答:Scrapy Spider会记录我需要的文本(也可以在Scrapy Shell中使用),但不会将它们写入JSON文件

这是语法错误,请尝试如下更新代码:

yield {
    "review": reviews
}

由于您的yield前面没有任何内容,因此基本上您在做的是yield None,因此您的json文件为空。

本文链接:https://www.f2er.com/3150957.html

大家都在问