在Python 2.7上使用XPath提取href值

4

I have this HTML:

<a href="some content">Click here</a>

如何在Python 2.7中使用XPath提取some contentclick me?

目前我有以下代码(从href结果中只提取“some content”):

import lxml.etree as LE
import requests

r = requests.get("http://localhost")
html = r.text
root = LH.fromstring(html)
print root.xpath('//a/@href')

你必须使用XPath吗?正则表达式在HTML中应该也可以工作。 - b10hazard
1
我曾经用正则表达式来做这件事...但是后来我被膝盖中了一箭。开玩笑的,不过正则表达式并不推荐用于解析HTML/XML结果 :) - thclpr
啊,我明白了。我不熟悉xpath。也许下次需要解析HTML时我会尝试一下。 - b10hazard
1
XPath和lxml工作得非常好,而且速度更快。 - thclpr
1个回答

5
您只能使用XPath选择其中一个,但是您可以选择所有的<a>元素,然后像这样选择href属性和文本内容:
for elt in root.xpath('//a'):
    print(elt.attrib['href'], elt.text_content())

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接