Я совершенно новый для python, и мне нужна помощь в синтаксисе поиска и итерации через теги html с помощью lxml. Вот варианты использования, которыми я занимаюсь:Нужна помощь синтаксиса python lxml для разбора html
HTML-файл довольно хорошо сформирован (но не идеален). Имеет несколько таблиц на экране, один из которых содержит набор результатов поиска, и один для заголовка и нижнего колонтитула. Каждая строка результата содержит ссылку для детализирования результата поиска.
Мне нужно найти среднюю таблицу с результатами поиска строк (это тот, который я смог выяснить):
self.mySearchTables = self.mySearchTree.findall(".//table") self.myResultRows = self.mySearchTables[1].findall(".//tr")
Мне нужно найти ссылки, содержащиеся в этой таблице (это где я застреваю):
for searchRow in self.myResultRows: searchLink = patentRow.findall(".//a")
Это, кажется, не находит элементы ссылки.
Мне нужен простой текст ссылки. Я предполагаю, что это будет что-то вроде
searchLink.text
, если я действительно получил элементы ссылки в первую очередь.
Наконец, в фактической ссылке API для lxml я не смог найти информацию о вызовах find и findall. Я почерпнул их из бит кода, который я нашел в google. Я что-то пропустил о том, как эффективно находить и перебирать HTML-теги с помощью lxml?
Yay! Только то, что мне было нужно. Я интерпретировал cssselect, чтобы на самом деле требовать, чтобы элементы имели объявленный класс css. Вложенная логика поиска - это то, что мне нужно! Спасибо, Ван Гейл! –
Эта страница рекомендует использовать iterchildren и iterdescendants с опцией тега. http://www.ibm.com/developerworks/xml/library/x-hiperfparse/#N10239 – endolith
Отличный ответ, но как незначительный каламбур - почему '.// tr/*/a', а не' .// тр // a'? Первый не смог бы найти что-либо с дополнительным промежуточным тегом, т. Е. '