2

我正在研究scrapy,我正在抓取一个网站并xpath用来抓取物品。但是其中一些div包含javascript,所以当我使用 xpath 直到div id包含 javascript 代码返回一个空列表,并且不包括该 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"]')

那么我怎样才能text(Some data)从上面提到的anchor tag内部获取h2 element,是否有任何替代方法可以从包含scrapy中的javascript的元素中获取数据

4

1 回答 1

2
<div class="subContent2">    
   <div id="contentDetails">
       <div class="eventDetails">
            <h2>
                <a href="javascript:;" onclick="jdevents.getEvent(117032)">Some data</a>
            </h2>
       </div>
   </div>
</div> 

在这种情况下,问题不在于获取“某些数据”字符串的 javascript 代码。

您需要获取子节点:

required_data = hxs.select('//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"]/h2/a/text()')

在此处输入图像描述

或使用string功能:

required_data = hxs.select('string(//div[@class="subContent2"]/div[@id="contentDetails"]/div[@class="eventDetails"])')
于 2012-06-12T13:55:51.570 回答