在Python中用xpath提取标记之间的文本

2024-06-23 19:43:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用python从一个网站提取一个度量:http://www.bild.de/regional/hamburg/mord/das-denkt-der-presserat-ueber-den-mord-an-unserer-tochter-lisa-41186944.bild.html

在“LACHEN”按钮下(现在需要149号)。该特定元素的XPath是//*[@id="jsm_16584"]/ul/li[1]/span

但是,当我试图查询它时,它不会返回任何对象:

url = "http://www.bild.de/regional/hamburg/mord/das-denkt-der-presserat-ueber-den-mord-an-unserer-tochter-lisa-41186944.bild.html"
req=urllib2.Request(url)
tree = lxml.html.fromstring(urllib2.urlopen(req).read())
metric=tree.xpath('//*[@id="jsm_16584"]/ul/li[1]/span')
print metric

它以空列表的形式返回metric。在


Tags: httphtmlwwwdemetricderregionaldas
1条回答
网友
1楼 · 发布于 2024-06-23 19:43:37

urlopen不执行任何脚本,您只需获取原始html,因此如果数据是由javascript生成的,则不会使用此方法呈现。这样的方法应该有效:

import sys  
from PyQt4.QtGui import *  
from PyQt4.QtCore import *  
from PyQt4.QtWebKit import *  
from lxml import html

class Render(QWebPage):  
  def __init__(self, url):  
    self.app = QApplication(sys.argv)  
    QWebPage.__init__(self)  
    self.loadFinished.connect(self._loadFinished)  
    self.mainFrame().load(QUrl(url))  
    self.app.exec_()  

  def _loadFinished(self, result):  
    self.frame = self.mainFrame()  
    self.app.quit()  

url = 'http://www.bild.de/regional/hamburg/mord/das-denkt-der-presserat-ueber-den-mord-an-unserer-tochter-lisa-41186944.bild.html'  
r = Render(url)  
page = r.frame.toHtml()

tree = html.fromstring(page)
metric=tree.xpath('//button[@class="btn-mood-1"]/@data-mood-count')

print(metric)

相关问题 更多 >

    热门问题