2012-04-30 10 views
3

lxmlを使ってHTMLページからすべてのURLとその名前を探したい。lxmlを使ってHTMLのすべてのリンクを取得する

私はこのURLを解析できますが、このことを知ることはできますが、lxmlを使用してすべてのURLリンクを見つけることができる簡単な方法はありますか?

+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

偉大な答えは、ちょうど 'ピップインストール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'でインストールしてください。詳細については、[here](https://pythonhosted.org/cssselect/)にアクセスしてください。 – jheyse

関連する問題