@Bruh_h_h_h

Как залезть внутрь тега?

хочу спарсить цену автопокупки предмета стим(число 1926,57), использую bs4 и requests
Когда получаю весь код страницы, пытаюсь найти по тегу нужный фрагмент, но он оказывается пустым, хотя на сайте его можно раскрыть и посмотреть внутрянку, код и скрины прилагаю
from bs4 import BeautifulSoup
import requests
html = requests.get("https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Nightwish%20%28Minimal%20Wear%29")
soup = BeautifulSoup(html.text, "html.parser")
price = soup.find("div", id="market_commodity_buyrequests")
print(price)

А вот и весь вывод
<div id="market_commodity_buyrequests">
											 
										</div>

вот html этого куска
Скриншот фрагмента кода удален модератором.
при попытке взять тег span и класс "market_commodity_orders_header_promote", выдаёт либо None, либо []
  • Вопрос задан
  • 95 просмотров
Пригласить эксперта
Ответы на вопрос 2
LivingDictionary
@LivingDictionary
Любознательный, но бессистемный.
Я не знаю почему, НО у меня soup возвращает именно пустой тег , если смотреть браузером то тег не пустой. А soup берет ответ от requests, который возвращает неправильное:
<div id="market_commodity_buyrequests">\r\n\t\t\t\t\t\t\t\t\t\t\t&nbsp;\r\n\t\t\t\t\t\t\t\t\t\t</div>

Так что soup работает правильно.

Похоже на решение тут.
Ответ написан
Vindicar
@Vindicar
RTFM!
Это называется "поленился погуглить". Вопрос уже задавали много раз, в т.ч. тут.
Вот мой недавний ответ на тот же вопрос.
Сейчас далеко не 90е, и на большинстве страниц полно JS-скриптов. Они, в том числе, могут делать фоновые (без перезагрузки страницы) запросы по ходу работы сайта. Так, например, реализуется "бесконечная лента" - по достижению низа страницы делается фоновый запрос, и новый контент подставляется вниз.
Некоторые сайты на этом вообще целиком построены - отдают основным запросом только болванку, а содержимое туда подсовывают фоновыми запросами. Как следствие, то, что ты выкачиваешь через requests, и то, что увидит пользователь в браузере - две большие разницы.
Соответственно, тут нужно:
1. Идентифицировать, какие фоновые запросы делает сайт. Инструменты разработчика в браузере в помощь.
2. Определить, какие из этих запросов подгружают нужную тебе информацию, и в каком виде она представлена. Нередко там не HTML-разметка, а формат JSON, с которым куда проще работать.
3. Определить, что нужно для выполнения этих запросов: какие URL дёргать, какие параметры подставлять, и т.д.
4. Попробовать имитировать только эти запросы.
Успех зависит от сайта, многие пытаются защищаться от такого, кто во что горазд.

Альтернативный вариант - использовать безголовый браузер. Но там своя гора проблем: это куда более ресурсоёмко, нужно дождаться полной прогрузки сайта, API для поиска там тоже своё. Так что я бы переходил к этому варианту только если имитировать запросы самому не вышло.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы