2012-06-12 56 views
2

我正在scrapy上工作,我正在刮一個網站並使用xpath來刮取物品。 但有些div含有javascript,所以當我使用的XPath,直到包含JavaScript代碼將返回一個空的列表中的div id,並且在不包括div元素(其中包含的javascript)可以能夠獲取HTML數據通過xpath從包含JavaScript在Scrapy中的xpath廢料數據python

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 tagh2 element如上所述,是有從所述元件讀取數據,它包含在scrapy

回答

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的問題是不是在這種情況下,獲得「某些數據」串中的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"])') 
+0

:感謝烏拉圭回合的答覆,我有一個空的Unicode字符串如下時我使用了字符串函數[] –

+0

它適用於我 - 我添加了截圖的答案 – warvariuc