2015-11-24 8 views
0

У меня есть HTML-документ со структурой:Извлечение данных из HTML

<!DOCTYPE html> 
<html> 
<body> 

<p>One</p> 
<p>Two</p> 
<p>Three</p> 

</body> 
</html> 

Advise модуль для Python, с помощью которого я могу сделать:

var = ModuleName.html.bode.p2 
print(var) 
Two 
+3

Используйте селекторы 'Beautifulsoup' и' CSS' или 'lxml' – SIslam

ответ

2

BeautifulSoup бы сделать это довольно близко к тому, что вы спрашиваете:

from bs4 import BeautifulSoup 

soup = BeautifulSoup(data) 

print(soup.html.body("p")[1].text) # prints Two 

Другими словами, точка здесь ярлыки «найти», скобка ярлык «найти все».

1

Я бы порекомендовал вам использовать BeautifulSoup, чтобы разобрать ваш HTML и извлеките контент, который вы хотите, с помощью селекторов css.

Вы можете найти пример чего-то очень похожего на то, что вы хотите сделать в документации: http://www.crummy.com/software/BeautifulSoup/bs4/doc/#css-selectors

Edit: Вот фрагмент кода, поскольку документация имеет опечатку и ommits от «:» в строка селектора.

from bs4 import BeautifulSoup 

data = "<!DOCTYPE html> <html> <body><p>One</p><p>Two</p><p>Three</p></body></html>" 

soup = BeautifulSoup(data, 'html.parser') 
print soup.body.select("p:nth-of-type(2)") 
Смежные вопросы