Не удается разобрать ‘href’ из строки в BeautifulSoup4

#python #html #web-scraping #beautifulsoup

#Python #HTML #веб-очистка #BeautifulSoup

Вопрос:

У меня есть этот фрагмент кода здесь:

 from bs4 import BeautifulSoup

myString = '<a href="/number-stations/german/g06" title="G06">G06</a>'

i = BeautifulSoup(str(myString), 'html.parser')
print(type(i))
print(i)
myText = i.get_text(strip=True)
print(myText)
myURL = i["href"]
print(myURL)
 

Идея состоит в том, чтобы разобрать href из этой строки.

Однако я не могу понять, почему он этого не видит. Мой вывод:

 <class 'bs4.BeautifulSoup'>
<a href="/number-stations/german/g06" title="G06">G06</a>
G06
Traceback (most recent call last):
  File "c:UsersuserDesktopaaatest.py", line 10, in <module>
    myURL = i["href"]
  File "C:ProgramDataAnaconda3libsite-packagesbs4element.py", line 1401, in __getitem__
    return self.attrs[key]
KeyError: 'href'
 

Почему BeautifulSoup не может видеть href этой строки?

Ответ №1:

Когда вы пытаетесь получить доступ к href using i["href"] , вы обращаетесь к нему так, как будто это a dict , но это не так. Сначала вы должны найти тег, используя .find() метод.

 from bs4 import BeautifulSoup

myString = '<a href="/number-stations/german/g06" title="G06">G06</a>'

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

print(soup.find('a').attrs)
print('-' * 10)
print(soup.find('a')['href'])
 

Вывод:

 {'href': '/number-stations/german/g06', 'title': 'G06'}
----------
/number-stations/german/g06