在获取各种blogspots,tumblr和wordpress页面的网址后,我在处理html页面时遇到了一些问题。问题是,我希望区分每篇博文的内容,标题和日期。我或许可以通过正则表达式来获取日期,但是现在有很多自定义脚本正在使用html类和结构是如此不同。
有没有人有可能有帮助的解决方案?
答案 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