【问题标题】:Why Does My Code Return Blanks? (scraping with Scrapy)为什么我的代码返回空白? (用 Scrapy 刮)
【发布时间】:2019-06-11 22:40:04
【问题描述】:

我的目标是按星期几的顺序抓取漫画并将其保存到 Excel 数据表中。我的来源是https://comic.naver.com/webtoon/weekday.nhn

我已经成功地通过终端直接抓取数据,并想为整个过程编写一个合适的脚本,但没有多大成功。

使用response.xpath("//div[@class='list_area daily_all']/div[1]/div/h4/span/text()").extract() 直接通过终端抓取数据将正确生成数据。工作日从 div[1~7] 排序,此代码返回“星期一”。

以下代码返回星期一漫画列表。 response.xpath("//div[@class='list_area daily_all']/div[1]/div//ul/li/a[@class='title']/text()").extract()

但是,下面的代码没有返回想要的结果。

def parse(self, response):
    for webtoon in response.xpath("//div[@class='list_area daily_all']/div/div"):
        yield {
            'Day': webtoon.xpath('/h4/span/text()').extract(),
            'Title': webtoon.xpath("/ul/li/a[@class='title']/text()").extract(),
        }

预期结果将是以下 7 行代码,按星期几的顺序排列 {'Day': [day], 'Title': [title1, title2, title3]}

但是,我的代码正在返回 {'Day': [], 'Title': []}

我希望这一切都有意义。

【问题讨论】:

    标签: python scrapy web-crawler screen-scraping


    【解决方案1】:

    您需要以 . (点)。

    当你这样做时,不管你没有使用response.xpath,你仍然试图在 XML 的根目录中获取一个 h4 元素,而不是在 list_area daily_all div 之后的 h4 标记.

    webtoon.xpath('/h4/span/text()').extract()
    

    正确的做法是在/h4 之前添加一个.,这个点引用了您之前的xpath 选择器的当前位置。

    webtoon.xpath('./h4/span/text()').extract()
    

    【讨论】:

    • 天哪,我知道这个问题的答案,但就是无法将这些点联系起来。非常感谢,这只是我网络爬虫之旅的垫脚石,我已经准备好进行下一次了。
    • 其实可以直接用h4代替./。如果元素前没有/,则假定为./
    猜你喜欢
    • 1970-01-01
    • 2016-11-12
    • 2018-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多