我正在使用Scrapy来抓取这个网站。我想抓取所有class=“data1”的div元素。我使用css和xpath选择器来实现。但是,我无法使用css和xpath选择器找到这些元素,即使我可以在浏览器的html代码中看到它们。
在scrapy shell中获取url后:
In [6]: response.css('div#my_div')
Out[6]: [<Selector query="descendant-or-self::div[@id = 'my_div']" data='<div id="my_div">Results will be show...'>]
In [7]: response.css('div#my_div div')
Out[7]: []
In [8]: response.xpath('//div[@class="data1"]')
Out[8]: []
HTML看起来像这样:
<div id="my_div" style>
<div class="data1">...</div>
<div class="data1">...</div>
<div class="data1">...</div>
...
</div>
1条答案
按热度按时间ar7v8xwq1#
这是因为网站的这一部分是用javascript呈现的。如果在示例中的第一个查询中调用
.get()
,您可以看到这一点:如果你通过浏览器开发工具的网络标签进行调查,你会发现所有的信息都来自对
'https://data.crn.com/2023/wotc2023.php?st1=1&st2=a'
的API调用,当通过scrapy shell获取时,它会返回一个json
对象,其中包含该部分的所有信息。