2010-11-15 47 views
1

我有一些HTML文件:如何可以解析HTML中使用lxml的,蟒蛇

<html> 
<body> 
    <span class="text">One</span>some text1</br> 
    <span class="cyrillic">Мир</span>some text2</br> 
</body> 
</html> 

我怎样才能获得 “一些文本1” 和 “一些text2” 中使用lxml的使用Python?

+0

这里的教程:http://codespeak.net/lxml/tutorial.html具体 任何你不明白吗? – Wolph 2010-11-15 02:38:20

+0

本教程链接已停用。请删除。 – ely 2013-04-23 21:18:17

回答

5
import lxml.html 

doc = lxml.html.document_fromstring("""<html> 
<body> 
    <span class="text">One</span>some text1</br> 
    <span class="cyrillic">Мир</span>some text2</br> 
</body> 
</html> 
""") 

txt1 = doc.xpath('/html/body/span[@class="text"]/following-sibling::text()[1]') 
txt2 = doc.xpath('/html/body/span[@class="cyrillic"]/following-sibling::text()[1]') 
3

我使用lxml进行xml解析,但我使用BeautifulSoup for HTML。这是一个非常快速/简短的旅程,以您的问题的一个解决方案结束。希望能帮助到你。

Python 2.6.5 (r265:79359, Mar 24 2010, 01:32:55) 
[GCC 4.0.1 (Apple Inc. build 5493)] on darwin 
Type "help", "copyright", "credits" or "license" for more information. 
>>> from BeautifulSoup import BeautifulSoup as soup 
>>> stream = open('bs.html', 'r') 
>>> doc = soup(stream.read()) 
>>> doc.body.span 
<span class="text">One</span> 
>>> doc.body.span.nextSibling 
u'some text1' 
>>> x = doc.findAll('span') 
>>> for i in x: 
...  print unicode(i) 
... 
<span class="text">One</span> 
<span class="cyrillic">Мир</span> 
>>> x = doc('span') 
>>> type(x) 
<class 'BeautifulSoup.ResultSet'> 
>>> for i in x: 
...  print unicode(i) 
... 
<span class="text">One</span> 
<span class="cyrillic">Мир</span> 
>>> for i in x: 
...  print i.nextSibling 
... 
some text1 
some text2 
>>>