Как сериализовать красивые пути доступа? - PullRequest
1 голос
/ 10 сентября 2010

У меня есть код, который делает что-то вроде этого:

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

Теперь я хотел бы иметь возможность быстро добавлять фильтры, поэтому жесткое кодирование больше не является опцией. Как я могу получить доступ к тем же тегам с путем, закодированным в строке?

конечно, я мог бы придумать какой-нибудь формат, например [('getattr', 'previous'), ('getattr', 'parent'), ..., ('getitem', 'href)] и проанализировать его с __getattr__ и __getitem __.

Теперь вопрос: есть ли уже более красивый способ сделать это, или мне нужно реализовать это самостоятельно?

1 Ответ

1 голос
/ 10 сентября 2010

Мне кажется, что вам было бы лучше использовать выражение XPATH. Это обсуждение содержит некоторую информацию о плагине XPATH для BeautifulSoup под названием BSXPath. Я не использовал его, поэтому я не знаю, будет ли он служить вашей цели.

Если вы готовы заменить BeautifulSoup, то lxml имеет действительно мощную реализацию XPATH.

обновление

См. Комментарий @ llasram к этому ответу:

В наши дни в lxml есть html-модуль, который сам разработчик BeautifulSoup рекомендует вместо BeautifulSoup. Он даже имеет подмодуль soupparser, который будет использовать BeautifulSoup для анализа!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...