通过包含scrapy python中的javascript的div的xpath废弃数据

时间:2012-06-12 12:08:40

标签: javascript python xpath scrapy

我正在研究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"]')

那么如何从上面提到的text(Some data)中的anchor tag获取h2 element,是否有任何替代方法从scrapy中包含javascript的元素中获取数据

1 个答案:

答案 0 :(得分: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()')

enter image description here

或使用string功能:

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