我想使用 lxml 从 html 页面中找出所有 url 及其名称。
我可以解析 url 并找到这个东西,但是有什么简单的方法可以使用 lxml 找到所有 url 链接吗?
from lxml.html import parse
dom = parse('http://www.google.com/').getroot()
links = dom.cssselect('a')
from lxml import etree, cssselect, html
with open("/you/path/index.html", "r") as f:
fileread = f.read()
dochtml = html.fromstring(fileread)
select = cssselect.CSSSelector("a")
links = [ el.get('href') for el in select(dochtml) ]
links = iter(links)
for n, l in enumerate(links):
print n, l
cssselect
cssselect
是一个额外的养眼依赖项,它在幕后将你的 CSS 选择器转换为类似 dom.xpath("//a[@class='mystyle']")
的东西,这样你也可以避免它,并直接编写你的 xpath 调用。
lxml.html.HtmlElement.iterlinks()
在特殊情况下,当您输入的是 HTML 并且您对链接特别感兴趣时,您可以利用
lxml.html
方便地公开的 ootb 链接迭代器,并避免处理 XPath 选择器:
for elem, attrname, url, pos in dom.iterlinks():
# yields (element, attribute, link, pos) for every link in the document
print(url)