Переменная использует неправильную функцию при парсинге на Python BS4
Я пытаюсь спарсить html страницу при помощи python, используя библиотеку BS4.
Я написал небольшой код для получения data-id
из небольшого кусочка html, так как эта проблема с find у меня возникает в любом участке кода:
from bs4 import BeautifulSoup
async def parse():
my_html = '<li rel="" class="wrap tleft rel fleft ad_idRJQvg " data-adnumber="1" data-id="794072456"></li>'
soup = BeautifulSoup(
markup = my_html,
features = "lxml"
)
x = soup.find("li", class_ = "wrap").attrs["data-id"]
print(x)
if __name__ == "__main__":
run(parse())
После запуска этого кода у меня отображается ошибка:
Traceback (most recent call last):
File "D:\Projects\my business\application\app\manage.py", line 49, in <module>
run(parse())
File "C:\Program Files\Python310\lib\asyncio\runners.py", line 44, in run
return loop.run_until_complete(main)
File "C:\Program Files\Python310\lib\asyncio\base_events.py", line 646, in run_until_complete
return future.result()
File "D:\Projects\my business\application\app\manage.py", line 44, in parse
x = soup.find("ul", class_ = "wrap").attrs["href"]
AttributeError: 'NoneType' object has no attribute 'attrs'
Я точно знаю что написал всё правильно так как не второй день этим занимаюсь.. Я просмотрел то как VS Code определяет функцию find и какие аргументы принимает:
На скриншоте видно, что всёв порядке, так как после выполнения функции find
должна быть доступна функция attrs, которая должна достать data-id
из моего кусочка html, но этого по какой-то причине не происходит и как я уже понял find
определяется как обычная python функция, которая доступна из коробки для поиска подстроки в тексте.
Я использую python версии 3.10.5 а также pip версии 23.1.2
- Подскажите как я могу решить данную проблему?
- Какие есть способы её решения? Так как я просто отправил кусочек для понимая, но html страница по объёму довольно большая.