Python парсинг данных веб страницы
недавно решил написать парсер по урокам в ютубе. В общем хотел написать парсер что будет выдавать название всех бесплатных на данный момент игр. Только вот он выдавал только пустую строчку, я уже пытался переписать код, и смотрел может у кого-то есть такая же проблема - но ничего не нашел.
import requests
from bs4 import BeautifulSoup as BS
url = 'https://steamdb.info/upcoming/free'
req = requests.get(url)
soup = BS(req.content, 'html.parser')
name = soup.find_all("tr", {"class":"app"})
for x in name:
title = x.find("td > a > b")
print(title.text)
Ответы (3 шт):
Ты посмотри какой ответ у тебя вылезает: <Response [403]> - доступ запрещен, а если посмотреть в текст, там написано, что надо пройти капчу (просто запиши req.text в какой-нибудь файл html и открой в браузере).
Если вы выполните следующий код, то увидите получаемую в запросе страницу. Она не содержит данных, которые вы хотите получить. По причине динамического наполнения страницы JavaScript или какой-нибудь защиты.
import requests
url = 'https://steamdb.info/upcoming/free'
req = requests.get(url)
with open('file.html', 'w', encoding='utf8') as f:
f.write(req.text)
Либо выберите другой сайт для изучения парса (без динамического наполнения), либо посмотрите в сторону, например, selenium чтоб на страницах отрабатывал JavaScript.
Можно воспользоваться selenium и быстро открыть браузер, сохранить страницу и закрыть его, а потом работать со страницей. Для работы надо:
pip install selenium
pip install webdriver_manager
Пример кода:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from bs4 import BeautifulSoup
url = "https://steamdb.info/upcoming/free/"
browser = webdriver.Chrome(ChromeDriverManager().install())
browser.get(url)
soup = BeautifulSoup(browser.page_source, 'html.parser')
browser.close()
content = soup.select('tr.app.sub > td > a > b')
for item in content:
print(item.text)
Вывод:
Tennis World Tour - DLC 11 - Garcia
Tennis World Tour - DLC 14 - Shapovalov
Tennis World Tour - DLC 13 - De Minaur
Tennis World Tour - DLC 14 - Shapovalov
Tennis World Tour - DLC 11 - Garcia
Geneshift
Kao the Kangaroo: Round 2
Killing Floor 2
Kingdom Come: Deliverance
Tropico 6
Warhammer 40,000: Mechanicus
Project Highrise