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

BS не видит классы при парсинге?

Пытаюсь парсить сайт при помощи BS4 и requests.
C сайта с запросом в поисковик: https://steambuy.com/catalog/?q=PUBG
Нужно получить ссылку на страницу 1 результата поиска. Но BS почему-то не видит нужного класса?
Что не так с кодом или с сайтом?
import requests
from bs4 import BeautifulSoup as BS 
game = 'PUBG'
START='https://steambuy.com/catalog/?q='
HOST='https://steambuy.com'
URL=START+game
def get_html(url):
    search= requests.get(url)
    return search


def get_content(html):
    soup = BS(html,'html.parser')
    item = soup.find('a',class_='product-item__title-link').get('href')
    return item

def parse(url):
    html= get_html(url)
    if html.status_code == 200:
        a = get_content(html.text)
        print(a)
    else:
        pass
parse(URL)
  • Вопрос задан
  • 858 просмотров
Пригласить эксперта
Ответы на вопрос 2
hottabxp
@hottabxp Куратор тега Python
Сначала мы жили бедно, а потом нас обокрали..
Добавлено:
import requests
import json
from bs4 import BeautifulSoup as BS 

headers = {'X-Requested-With':'XMLHttpRequest'}
url = 'https://steambuy.com/ajax/_get.php?rnd=0.7101602294952999&offset=0&region_free=0&sort=cnt_sell&sortMode=descendant&view=extended&a=getcat&q=PUBG&series=&izdatel=&currency=wmr&curr=&currMaxSumm%5Bwmr%5D=3000&currMaxSumm%5Bwmz%5D=100&currMaxSumm%5Bwme%5D=70&currMaxSumm%5Bwmu%5D=1000&letter=&limit=0&page=1&minPrice=0&maxPrice=5000&minDate=0&maxDate=0&deleted=0&no_price_range=0&records=14'

response = requests.get(url,headers=headers)
soup = BS(json.loads(response.text)['html'],'html.parser')
items = soup.find_all('a',class_='product-item__title-link')
for item in items:
	print('https://steambuy.com'+item.get('href'))

На выходе:
https://steambuy.com/steam/playerunknown-s-battleg...
https://steambuy.com/steam/playerunknowns-battlegr...

Конечно не можете найти, так как результаты подгружаются с другого адреса:
https://steambuy.com/ajax/_get.php+много параметров

5ea31a5f2854d865027267.png
Ответ написан
Amigun
@Amigun
Джун : |
Не могу утверждать, но возможно те данные, которые тебе нужны, добавляются на страницу динамически.
Библиотека requests получает лишь код странички, а с динамическими данными работать не может.
Как это проверить? Через тот же requests скачай запрашиваемую страничку и изучи её.
Если моя теория верна, то смотри в сторону selenium.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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