Python 如何序列化组访问路径?

Python 如何序列化组访问路径?,python,html,parsing,serialization,beautifulsoup,Python,Html,Parsing,Serialization,Beautifulsoup,我有这样的代码: item.previous.parent.parent.aTag['href'] 现在我希望能够快速添加过滤器,所以硬编码不再是一个选项。如何访问路径编码为字符串的相同标记 当然,我可以发明一些格式,比如[('getattr','previous'),('getattr','parent'),…,('getitem','href)],然后用uu getattr和u getitem对其进行解析 现在的问题是:是否已经有一种更漂亮的方法来实现它,或者我需要自己实现它?在我看来,您

我有这样的代码:

item.previous.parent.parent.aTag['href']
现在我希望能够快速添加过滤器,所以硬编码不再是一个选项。如何访问路径编码为字符串的相同标记

当然,我可以发明一些格式,比如[('getattr','previous'),('getattr','parent'),…,('getitem','href)],然后用uu getattr和u getitem对其进行解析


现在的问题是:是否已经有一种更漂亮的方法来实现它,或者我需要自己实现它?

在我看来,您最好使用XPATH表达式。这里有一些关于BeautifulSoup的名为BSXPath的XPATH插件的信息。我没有用过,所以我不知道它是否能满足你的需要

如果您愿意替换BeautifulSoup,那么它有一个非常强大的XPATH实现

更新

请参阅作者对此答案的评论:

现在,lxml有一个html模块,BeautifulSoup实现者自己推荐它胜过BeautifulSoup。它甚至有一个soupparser子模块,它将使用BeautifulSoup进行解析


在我看来,最好使用XPATH表达式。这里有一些关于BeautifulSoup的名为BSXPath的XPATH插件的信息。我没有用过,所以我不知道它是否能满足你的需要

如果您愿意替换BeautifulSoup,那么它有一个非常强大的XPATH实现

更新

请参阅作者对此答案的评论:

现在,lxml有一个html模块,BeautifulSoup实现者自己推荐它胜过BeautifulSoup。它甚至有一个soupparser子模块,它将使用BeautifulSoup进行解析


我考虑过xpath,但beautifulsoup最酷的地方是,我不需要依赖正确稳定的html,但可以解析任何类似html的内容。@allo:valid point。我认为在这种情况下,您必须自己实现它。现在lxml有一个
html
模块,BeautifulSoup实现者自己推荐它胜过BeautifulSoup。它甚至还有一个
soupparser
子模块,它将使用BeautifulSoup来进行解析!我考虑过xpath,但beautifulsoup最酷的地方是,我不需要依赖正确稳定的html,但可以解析任何类似html的内容。@allo:valid point。我认为在这种情况下,您必须自己实现它。现在lxml有一个
html
模块,BeautifulSoup实现者自己推荐它胜过BeautifulSoup。它甚至还有一个
soupparser
子模块,它将使用BeautifulSoup来进行解析!