如何根据<p> </p> <div>或<br/>标签</div>的存在拆分html页面

时间:2013-07-30 10:05:11

标签: python html-parsing beautifulsoup lxml

我试图根据网站的位置将抓取的网页拆分成不同的部分 <p> <br><div>代码。因此,第一个<p>代码会包含从<html><p>代码的所有数据/代码。我从lxml项目中看过类似etree的东西,但它看起来很切。

我从“普通”html解析看到的差异是所选标签的数量。我想选择多个标签及其数据并单独保存,而“普通”html解析工具只能选择一个隔离的标签/标签(使用xpath等)并使用它。 (我对网络编程也很陌生。)

我想到了一种方法,我会保存文件偏移,然后继续剪切和切片输入文件以实现我的目标,但它似乎最好是hackish。

我如何实现既定目标,请帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

使用BeautifulSoup。这是一个很好的解析HTML的python工具。

下面是一个示例,说明解析HTML是多么容易 - 它打印标记名称(p)和所有<p>标记的内容。然后它找到id为“header”的元素。

这只是一个片段 - BeautifulSoup提供了许多过滤HTML文档的方法。

import sys
# add path to beautifulsoup library
sys.path.append('/usr/local/var/beautifulsoup')
# import it
from bs4 import BeautifulSoup

soup = BeautifulSoup(open("yourfile.html"))
for tag in soup.find_all('p'):
    print tag.name, tag.text

soup.find(id="header")