我想用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))
但是,没有结果:
怎么了?我已将其更改为此(使用splash),但仍然不起作用:
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))
在这种情况下,页面内容似乎是动态生成的 尽管您可以在浏览器中查看时看到存在的元素,但它们并不存在于HTML源代码中(即,在Scrapy所看到的内容中)。这是因为Scrapy不能呈现JavaScript等,你需要使用某种浏览器来呈现页面,然后将结果交给Scrapy处理。我建议使用Splash,因为它与Scrapy无缝集成。你知道吗
相关问题 更多 >
编程相关推荐