使用scrapy爬行数据时无法获取项目

时间:2017-07-07 06:57:40

标签: python scrapy web-crawler

我检查过chrome中的元素: enter image description here

我想使用scrapy在红色框中(可以多个)获取数据。我使用了这段代码(我从scrapy文档中看到了教程):

import scrapy

class KamusSetSpider(scrapy.Spider):
    name = "kamusset_spider"
    start_urls = ['http://kbbi.web.id/' + 'abad']

    def parse(self, response):
        for kamusset in response.css("div#d1"):
            text = kamusset.css("div.sub_17 b.tur.highlight::text").extract()
            print(dict(text=text))

但是,没有结果:

enter image description here

会发生什么?我已将其更改为此(使用启动)但仍无效:

    def start_requests(self):
        for url in self.start_urls:
            yield SplashRequest(url, self.parse, args={'wait': 0.5})

    def parse(self, response):
        html = response.body

        for kamusset in response.css("div#d1"):
            text = kamusset.css("div.sub_17 b.tur.highlight::text").extract()
            print(dict(text=text))

1 个答案:

答案 0 :(得分:0)

在这种情况下,似乎页面内容是动态生成的 -  虽然你可以看到从浏览器检查时存在的元素,但它们不存在于HTML源代码中(即Scrapy看到的内容)。这是因为Scrapy无法呈现JavaScript等。您需要使用某种浏览器来呈现页面,然后将结果放到Scrapy中进行处理。我建议使用Splash与Scrapy无缝集成。