刮博客内容

时间:2010-06-17 02:41:02

标签: python

在获取各种blogspots,tumblr和wordpress页面的网址后,我在处理html页面时遇到了一些问题。问题是,我希望区分每篇博文的内容,标题和日期。我或许可以通过正则表达式来获取日期,但是现在有很多自定义脚本正在使用html类和结构是如此不同。

有没有人有可能有帮助的解决方案?

3 个答案:

答案 0 :(得分:3)

如果可行,请使用博客的RSS或Atom提要 - 它们是结构良好的XML,而不是结构不合理的HTML,而Universal Feed Parser对于获取提要非常有帮助'Python中的内容。

如果某个博客缺少Feed(或者Feed很少),那么 解析其HTML(叹息!),最好的方法是BeautifulSoup(使用最新的3.0.*一个3.1 - 为什么,请参阅here) - 不是最快的,但在非常糟糕的HTML前面最具弹性(和我怀疑,同样缺乏Feed的博客可能会导致HTML烂掉。 {@ 1}},@ Hank推荐的库,确实包含了我相信的BeautifulSoup的副本,但是,如果这就是你要获得的,那么当你只需要一个部件时,为什么要去安装整个? )

答案 1 :(得分:2)

不要使用正则表达式。使用解析器。 lxml非常快。

实际上,如果您的网站发布了atom或rss feed,请解析它们;它们具有明确定义的结构,可以轻松获取您想要获取的数据。

更新:

通常,您可以在博文的HTML中找到Feed的<link>。寻找类似以下内容(type的确切值可能因Atom与RSS等而异)。

<link rel="alternate" type="application/atom+xml" title="My Weblog feed" href="/feed/" />

在文档的<head>中。 如果您找到了Feed,请使用Universal Feed Parser,如@Alex Martelli建议的那样。

哦,你可能想看this PyCon video

答案 2 :(得分:1)

我认为你应该改变你的做法。而不是解析html页面,为什么不解析RSS feed? Wordpress内置了它,它已经包含了你需要的信息,如标题,作者,日期等。

您仍然可以使用正则表达式来解析RSS源,或者您可以使用现有的python模块,例如Universal Feed Parser