2012-04-30 2 views
3

Я хочу узнать все URL-адреса и их имя с html-страницы с помощью lxml.получить все ссылки HTML, используя lxml

Я могу разобрать URL-адрес и узнать эту вещь, но есть ли какой-либо простой способ, с помощью которого я могу найти все ссылки на URL, используя lxml?

+1

Обратите внимание, что HTML не XML; если у вас возникли проблемы с разбором из-за отсутствия конечных элементов или отсутствующих котировок вокруг значений атрибутов, [Beautiful Soup] (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