@bely_volk95
Начинающий программист Python

Python requests почему не работает код?

import requests
from bs4 import BeautifulSoup
from fake_useragent import UserAgent

url = "https://www.google.com/search?q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80&oq=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80&aqs=chrome.0.69i59j0i67i131i433j0i67i433j0i67j0i67i433j46i433i512j0i67j0i433i512l2j0i512.6063j0j1&sourceid=chrome&ie=UTF-8"
gd = UserAgent().chrome
print(gd)
response = requests.get(url, headers={'User-Agent': gd})
print(response.status_code)
soup = BeautifulSoup(response.text, "lxml")
print(soup.find("span", {"class": "SwHCTb"}).text)

Выдает ошибку:
AttributeError: 'NoneType' object has no attribute 'text'

Почему код не работает?! Весь код вроде правильный. Подскажите плиз в чём проблема.
Если что сайт это курс доллара.
  • Вопрос задан
  • 181 просмотр
Пригласить эксперта
Ответы на вопрос 2
@alexbprofit
Junior SE
Контент генерится через js, используй селениум
Ответ написан
ScriptKiddo
@ScriptKiddo
Можно использовать такой Xpath
//span[text()='Российский рубль']/preceding-sibling::span

613fa2210f868224274671.png

UPD

import requests
from fake_useragent import UserAgent
from lxml import etree

url = "https://www.google.com/search?q=%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80&oq=" \
      "%D0%B4%D0%BE%D0%BB%D0%BB%D0%B0%D1%80&aqs=chrome.0.69i59j0i67i131i433j0i6" \
      "7i433j0i67j0i67i433j46i433i512j0i67j0i433i512l2j0i512.6063j0j1&sourceid=chrome&ie=UTF-8"
gd = UserAgent().chrome
response = requests.get(url, headers={'User-Agent': gd})

htmlparser = etree.HTMLParser()
tree = etree.fromstring(response.text, htmlparser)

result = tree.xpath("//div[contains(text(),'Российский рубль')]")
price = result[0].text.split()[0]
print(f'Стоимость доллара: {price} руб.')


OUT

Стоимость доллара: 72,75

Process finished with exit code 0
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы