Beautiful Soup AttributeError: у объекта 'NoneType' нет атрибута 'find_all', хотя веб-страница имеет такую ​​же структуру - PullRequest
1 голос
/ 02 мая 2020

поэтому у меня есть рабочий код для одного веб-скребка и я хочу использовать его на другом веб-сайте, который имеет такую ​​же структуру.

Код, который у меня работает, это:

url = "https://efl.network/index/efl/LeaguePassingStats.html"
page = requests.get(url)
soup = BeautifulSoup(page.content, 'html.parser')
tb = soup.find('table', class_='tablesorter')
table_rows = tb.find_all("tr")

однако, если я изменю url на

https://sim-football.com/indexes/DSFLS22/LeaguePassingStats.html

, это даст мне ошибка

table_rows = tb.find_all("tr")
AttributeError: 'NoneType' object has no attribute 'find_all'

Однако оба веб-сайта имеют одинаковую структуру.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

Если вы напечатаете page.content, вы увидите, что это HTML, которое возвращается: '<head><title>Not Acceptable!</title></head><body><h1>Not Acceptable!</h1><p>An appropriate representation of the requested resource could not be found on this server. This error was generated by Mod_Security.</p></body></html>'

Таким образом, веб-сайт по какой-то причине блокирует ваш веб-просмотр и возвращает эту ошибку HTML , в котором искомый элемент table не существует, вызывая вашу ошибку

0 голосов
/ 02 мая 2020

Эта строка возвращает None

tb = soup.find('table', class_='tablesorter')

Это означает, что на странице нет элемента таблицы с классом 'tablesorter'.

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