我想使用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))
但是,没有结果:
会发生什么?我已将其更改为此(使用启动)但仍无效:
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))
答案 0 :(得分:0)
在这种情况下,似乎页面内容是动态生成的 - 虽然你可以看到从浏览器检查时存在的元素,但它们不存在于HTML源代码中(即Scrapy看到的内容)。这是因为Scrapy无法呈现JavaScript等。您需要使用某种浏览器来呈现页面,然后将结果放到Scrapy中进行处理。我建议使用Splash与Scrapy无缝集成。