首页 文章

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

提问于
浏览
2

我正在研究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 element 中的 anchor tag 获得 text(Some data) 如上所述,是否有任何替代方法从scrapy中包含javascript的元素中获取数据

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代码获取'Some data'字符串 .

    您需要获得子节点:

    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"])')
    

相关问题