Невозможно извлечь href из тегов в элементах span - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь извлечь ссылки href (показанные ниже) после извлечения тегов span. Однако он выдает следующую ошибку:

Traceback (последний вызов был последним): файл "C: / Users / qeq981 / Desktop / work.py", строка 34, в печати (element.find) ('a') ['href']) TypeError: объект 'NoneType' не может быть подписан

Я использую следующий код:
result2 = soup.find_all('span', {'style': 'white-space: nowrap'}) for element in result2: print(element) print(element.find('a')['href'])

Однако, если я опущу ['href'], я получаю все теги span:

<span style="white-space: nowrap"><a href="https://www.mobygames.com/game/linux/americas-army-operations">Linux</a> (<em>2003</em>)</span> <a href="https://www.mobygames.com/game/linux/americas-army-operations">Linux</a> <span style="white-space: nowrap"><a href="https://www.mobygames.com/game/macintosh/americas-army-operations">Macintosh</a> (<em>2003</em>)</span> <a href="https://www.mobygames.com/game/macintosh/americas-army-operations">Macintosh</a> <span style="white-space: nowrap"><a href="https://www.mobygames.com/game/windows/americas-army-operations">Windows</a> (<em>2002</em>)</span> <a href="https://www.mobygames.com/game/windows/americas-army-operations">Windows</a>

Как мне извлечь href?

1 Ответ

2 голосов
/ 27 января 2020

С кодом HTML, который вы разместили, сценарий работает, хорошо (так что ошибка должна быть в другом месте в вашем HTML коде). извлеките правильные теги, вы можете использовать CSS селектор span[style="white-space: nowrap"] a[href], чтобы выбрать только <a> теги с "href =" под указанными <span> тегами.

Например (txt - это фрагмент из вашего вопрос):

from bs4 import BeautifulSoup

soup = BeautifulSoup(txt, 'html.parser')

for a in soup.select('span[style="white-space: nowrap"] a[href]'):
    print(a['href'])

Отпечатки:

https://www.mobygames.com/game/linux/americas-army-operations
https://www.mobygames.com/game/macintosh/americas-army-operations
https://www.mobygames.com/game/windows/americas-army-operations
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...