Python中有很多XML和HTML解析器,我正在寻找一种简单的方法来提取HTML文档的一部分,最好使用XPATH结构,但这只是可选的。
这是一个例子
src = "<html><body>...<div id=content>AAA<B>BBB</B>CCC</div>...</body></html>"
我想提取id = content的元素的整个主体,因此结果应为:<div id=content>AAA<B>BBB</B>CCC</div>
如果我可以在不安装新库的情况下执行此操作。
我还希望获得所需元素的原始内容(未重新格式化)。
不允许使用regexp,因为这些对于解析XML / HTML是不安全的。
答案 0 :(得分:1)
使用库解析 - 最好的方法是BeautifulSoup 以下是它如何适合您的片段!
from BeautifulSoup import BeautifulSoup
src = "<html><body>...<div id=content>AAA<B>BBB</B>CCC</div>...</body></html>"
soupy = BeautifulSoup( src )
content_divs = soupy.findAll( attrs={'id':'content'} )
if len(content_divs) > 0:
# print the first one
print str(content_divs[0])
# to print the text contents
print content_divs[0].text
# or to print all the raw html
for each in content_divs:
print each
答案 1 :(得分:0)
是的,我做到了这一点。它可能不是最好的方法,但它的工作方式类似于下面的代码。我没有测试这个
import re
match = re.finditer("<div id=content>",src)
src = src[match.start():]
#at this point the string start with your div everything proceeding it has been stripped.
#This next part works because the first div in the string is the end of your div section.
match = re.finditer("</div>",src)
src = src[:match.end()]
src现在只有字符串中的div。如果在某些情况下你需要另外一个内部你需要为你的re.finditer部分建立一个更好的搜索模式。