它打印1(或1.0),因为在您要获取的HTML文件中只有一个这样的元素带有id="body"。在
我下载了文件并证实了这一点。E、 g.:$ curl -O http://intelligencesquaredus.org/debates/past-debates/item/587-islam-is-dominated-by-radicals
获取文件587-islam-is-dominated-by-radicals
^{pr2}$
答案1。为了更确切地说,我也用vi手动搜索了这个文件,就一个!在
也许您正在寻找另一个div节点?一个有不同的id?在
更新:顺便说一句,XPath和其他HTML/XML解析非常具有挑战性。大量的坏数据和大量复杂的标记,乘以了检索、解析和遍历过程的复杂性。你可能会运行你的测试和试验很多次。如果你不为他们中的每一个都“入网”,那会快得多。缓存实时结果。原始代码如下所示:from lxml import html, etree
import requests
filepath = "587-islam-is-dominated-by-radicals"
try:
contents = open(filepath).read()
print "(reading cached copy)"
except IOError:
url = "http://intelligencesquaredus.org/debates/past-debates/item/587-islam-is-dominated-by-radicals"
print "(getting file from the net; please stand by)"
r = requests.get(url)
contents = r.content
tree = html.fromstring(contents)
count = tree.xpath('count(//*[@id="body"])')
print count
但是您可以通过使用通用缓存前端来简化这一过程,比如requests-cache。解析快乐!在