Невозможно получить доступ к тегу таблицы в BeautifulSoup - отображается как объявление вместо тега - PullRequest
0 голосов
/ 30 ноября 2018

Я использую Python3, используя Jupyter Notebook.Я пытаюсь выбрать теги строк таблицы с атрибутом класса «Компания» на этой странице , однако ни один тег не может быть выбран после определенной точки в супе.Когда я запускаю findAll, это приводит к пустому списку.Индекс супа, содержащий таблицу, равен 21, однако вместо тега он отображается как bs4.element.Declaration, поэтому, вероятно, findAll ничего не возвращает.

from bs4 import BeautifulSoup as bs  
import requests
url = 'http://theacsi.org/index.php?option=com_content&view=article&id=149&catid=&Itemid=214&i=Airlines'
r = requests.get(url, headers={
            'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'
        })
airlinesSatPage = r.content       
soup = bs(airlinesSatPage, "html.parser")
allRows = soup.findAll('tr',{'class':'Company'})
print(allRows)

Есть идеи, что происходит или что я могу сделать, чтобы получить доступ к этим тегам?

1 Ответ

0 голосов
/ 30 ноября 2018

Кажется, проблема в том, что html.parser не может обработать разметку HTML, возвращаемую с этого URL.Переключение на анализатор lxml решает проблему, но для этого требуется отдельный pip install lxml.

Итак, в заключение сначала:

pip install lxml

А затем измените анализатор в своем коде:

soup = bs(airlinesSatPage, "lxml")

При запуске печатает:

[<tr class="Company"><td class="Company"> <a href="https://www.theacsi.org..., ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...