2012-04-30 29 views
3

我想使用lxml从html页面找出所有的url及其名称。使用lxml获取HTML的所有链接

我可以解析网址,可以找出这个东西,但有没有什么简单的方法,我可以找到所有的URL链接使用lxml?

+1

注意,HTML不是XML;如果由于缺少末尾元素或缺少属性值引号而导致解析有问题,[美丽的汤](http://www.crummy.com/software/BeautifulSoup/)可以帮助或者可能更适合。 –

回答

8
from lxml.html import parse 
dom = parse('http://www.google.com/').getroot() 
links = dom.cssselect('a') 
+1

很好的答案,只需要做一个'pip install cssselect'来解决问题。 – taystack

1
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 
+1

请注意,cssselect现在是一个独立的项目,不再使用lxml。用'pip install cssselect'安装。去[这里](https://pythonhosted.org/cssselect/)了解更多信息。 – jheyse