我有代码,它做了这样的事情:
item.previous.parent.parent.aTag['href']
现在我希望能够快速添加过滤器,因此硬编码不再是一种选择。如何使用字符串编码的路径访问相同的标签?
当然我可以发明一些格式,如[('getattr','previous'),('getattr','parent'),...,('getitem','href)]并用__getattr__解析它和__getitem __。
现在的问题是:是否有更美妙的方式,或者我是否需要自己实施?
答案 0 :(得分:1)
在我看来,使用XPATH表达式会更好。这个discussion有一些关于BeautifulSoup的XPATH插件的信息,叫做BSXPath。我没有用它,所以我不知道它是否符合你的目的。
如果您愿意替换BeautifulSoup,那么lxml具有非常强大的XPATH实现。
<强>更新强>
请参阅@llasram对此答案的评论:
这些天lxml有一个html模块,BeautifulSoup实现者自己推荐使用BeautifulSoup。它甚至还有一个soupparser子模块,它将使用BeautifulSoup进行解析!