#python #python-3.x #beautifulsoup
#python #python-3.x #beautifulsoup
Вопрос:
Я использую метод find_all, чтобы получить некоторые элементы следующим образом:
elements = soup.find_all('a', {'class': "watchlink"})
чтобы получить элементы, подобные следующим:
<a class="watchlink" href="https://www1.swatchseries.to/freecale.html?r=iexyJrjdCI6InRuT0tnVpFR1VjBVZUmNFZHJiN09tLWENDT25oOGNrS3c0SkkzTDRLSXBUK1VCUXlOd0NJNW1uWWJkWVUrRkluejciLCJpdiI6IjEyNjViZTg2NTU3NWVkN2ZlNDZiNWVjZTA5NjkxNDE2IiwicyI6IjBhZGYxOGNmY2ExMzA5YjEifQ==" onclick="$(this).css('color','#AE3939'); $(this).css('text-decoration','line-through');" rel="nofollow" style="cursor:pointer;" target="_blank" title="mixdrop.co">Watch<span> This</span> Link!</a>
Я не могу получить плитку только так:
for x in elements:
print(x['title'])
Я получаю эту ошибку:
Traceback (most recent call last):
File "C:/Users/CobraCommander/PycharmProjects/999/get_vidtodo_links.py", line 25, in <module>
print(x['title'])
File "C:Python37libsite-packagesbs4element.py", line 1016, in __getitem__
return self.attrs[key]
KeyError: 'title'
Однако это работает для других атрибутов, таких как, например, «href».
Как мне получить заголовок: «mixdrop.co » из моей стихии?
Ответ №1:
Просто убедитесь, что вы получаете доступ к правильным anchor
тегам title
, поскольку, как я полагаю, есть теги с тем же именем класса, но без title
from bs4 import BeautifulSoup
html = '''<a class="watchlink" href="https://www1.swatchseries.to/freecale.html?r=iexyJrjdCI6InRuT0tnVpFR1VjBVZUmNFZHJiN09tLWENDT25oOGNrS3c0SkkzTDRLSXBUK1VCUXlOd0NJNW1uWWJkWVUrRkluejciLCJpdiI6IjEyNjViZTg2NTU3NWVkN2ZlNDZiNWVjZTA5NjkxNDE2IiwicyI6IjBhZGYxOGNmY2ExMzA5YjEifQ==" onclick="$(this).css('color','#AE3939'); $(this).css('text-decoration','line-through');" rel="nofollow" style="cursor:pointer;" target="_blank" title="mixdrop.co">Watch<span> This</span> Link!</a>'''
soup = BeautifulSoup(html, 'html.parser')
goal = [item['title'] for item in soup.findAll(
"a", {'class': 'watchlink', 'title': True})]
print(goal)
Вывод:
['mixdrop.co']