如何序列化beautifulsoup访问路径?

时间:2010-09-10 08:47:59

标签: python html parsing serialization beautifulsoup

我有代码,它做了这样的事情:

item.previous.parent.parent.aTag['href']

现在我希望能够快速添加过滤器,因此硬编码不再是一种选择。如何使用字符串编码的路径访问相同的标签?

当然我可以发明一些格式,如[('getattr','previous'),('getattr','parent'),...,('getitem','href)]并用__getattr__解析它和__getitem __。

现在的问题是:是否有更美妙的方式,或者我是否需要自己实施?

1 个答案:

答案 0 :(得分:1)

在我看来,使用XPATH表达式会更好。这个discussion有一些关于BeautifulSoup的XPATH插件的信息,叫做BSXPath。我没有用它,所以我不知道它是否符合你的目的。

如果您愿意替换BeautifulSoup,那么lxml具有非常强大的XPATH实现。

<强>更新

请参阅@llasram对此答案的评论:

  

这些天lxml有一个html模块,BeautifulSoup实现者自己推荐使用BeautifulSoup。它甚至还有一个soupparser子模块,它将使用BeautifulSoup进行解析!