我正在使用 scrapy ,我正在抓取一个网站并使用 xpath
来抓取项目。
但是一些div
包含javascript
,所以当我使用xpath直到包含javascript代码的div id
返回一个空列表,并且没有包括 div 元素(包含 javascript)可以获取 HTML 数据
HTML 代码
<div class="subContent2">
<div id="contentDetails">
<div class="eventDetails">
<h2>
<a href="javascript:;" onclick="jdevents.getEvent(117032)">Some data</a>
</h2>
</div>
</div>
</div>
蜘蛛代码
class ExampleSpider(BaseSpider):
name = "example"
domain_name = "www.example.com"
start_urls = ["http://www.example.com/jkl/index.php"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
required_data = hxs.select('//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"]')
那么我如何从上面提到的h2元素
内的 anchor 标记
获取文本(一些数据)
,是否有任何替代方案scrapy中从包含javascript的元素中获取数据的方法
最佳答案
<div class="subContent2">
<div id="contentDetails">
<div class="eventDetails">
<h2>
<a href="javascript:;" onclick="jdevents.getEvent(117032)">Some data</a>
</h2>
</div>
</div>
</div>
问题不在于本例中获取“Some data”字符串的 JavaScript 代码。
您需要获取子节点:
required_data = hxs.select('//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"]/h2/a/text()')
或使用字符串
函数:
required_data = hxs.select('string(//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"])')
关于javascript - 通过xpath从scrapy python中包含javascript的div中抓取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10996357/