@aleksegolubev

Как спарсить цены/ссылку steam?

Hello world!

Начал парсить steam, возникла проблема, а так же огромное непонимание.

Код:
from bs4 import BeautifulSoup
import requests

headers = {

    'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36',
    'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'Accept-Language': 'ru-UA,ru;q=0.9,en-US;q=0.8,en;q=0.7,ru-RU;q=0.6',
}
steam_link = ('https://steamcommunity.com/market/listings/730/AK-47%20%7C%20Phantom%20Disruptor%20%28Field-Tested%29')
print(steam_link)
full_page = requests.get(steam_link, headers=headers)
soup = BeautifulSoup(full_page.content, 'html.parser')

skins = soup.find_all('div', class_='market_listing_row')
print(skins)

for skin in skins:
  name = skin.find('span',class_='market_listing_row ').text
  counts = skin.find('span',class_='market_listing_num_listings_qty').text
  price = skin.find('span',class_='sale_price').text.replace('От','').strip() #HACK
  print(name, counts, price)


Ссылка на то, что парсю:
https://steamcommunity.com/market/listings/730/AK-...

Как спарсить цены + название + ссылку 'Купить'?
Спасибо большое за ответ :)

(Решил немного освоить парсинг, но вот что-то застрял)
  • Вопрос задан
  • 3866 просмотров
Решения вопроса 1
@dzhebrak
Этот блок обновляется с помощью js, поэтому нужно смотреть запросы, которые делает браузер.
Откройте инструменты разработчика в используемом браузере и на вкладке Network посмотрите XHR запросы. Там будут запросы к https://steamcommunity.com/market/itemordershistogram , которые возвращают json с нужными вам данными.

Request URL: https://steamcommunity.com/market/itemordershistogram?country=RU&language=russian&currency=1&item_nameid=176118358&two_factor=0

country, language, currency - без изменений
item_nameid есть в исходнике страницы, можно получить с помощью регулярного выражения:
import re
result = re.findall(r'Market_LoadOrderSpread\(\s*(\d+)\s*\)', str(full_page.content))
print (result[0])

После этого просто выполнить запрос с помощью requests и разобрать json
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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