#python #selenium #selenium-webdriver #web-scraping #beautifulsoup
#python #селен #selenium-webdriver #очистка веб-страниц #beautifulsoup
Вопрос:
Я новичок в программной и веб-обработке. Я хочу написать программу, которая посещает некоторые самые продаваемые игры и извлекает содержимое обзоров, но когда она пытается посетить игры с рейтингом M, моя программа просто перенаправляется на страницу проверки возраста. Поэтому я использую selenium для нажатия некоторых кнопок, чтобы я мог пройти проверку возраста.
Это пример:
IDlist = ['730','1085660']
chrome = webdriver.Chrome('./chromedriver')
for i in IDlist:
url = 'https://steamcommunity.com/app/%s/reviews/?l=englishamp;browsefilter=topratedamp;snr=1_5_100010_' %i
chrome.get(url)
#the age check page
chrome.find_element_by_css_selector('#ViewAllForApp').click()
chrome.find_element_by_css_selector('#age_gate_btn_continue').click()
for x in range(1,5):
chrome.execute_script('window.scrollTo(0,document.body.scrollHeight);')
time.sleep(2)
soup = BeautifulSoup(chrome.page_source, 'html.parser')
.
.
.
Первая игра (ID = 730) работает, но проблема в том, что когда я захожу во вторую игру (ID = 1085660), в ней нет страницы проверки возраста и появляется следующее сообщение об ошибке, подобное этому:
NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"#ViewAllForApp"}
(Session info: chrome=87.0.4280.88)
Как я могу избежать этой проблемы? if-else
?
Или попробуйте другие методы, чтобы пройти проверку возраста? (например. добавить cookies
)
Ответ №1:
Глядя на проверку возраста Steam, вы должны быть в состоянии установить cookie
lastagecheckage
на 1-0-1900
path=/
;
birthtime
на -2211667760
path=/
;
и
wants_mature_content
в 1
путь к приложению или /
перед посещением страницы магазина или при инициализации любой используемой HTTP-библиотеки, чтобы эффективно обойти перенаправление проверки возраста.
Не игнорируйте пути, они важны. Их несоблюдение может привести к бесконечному циклу перенаправления.
Для тестирования:
document.cookie = "wants_mature_content=1";
document.cookie = "lastagecheckage=1-0-1900; path=/";
document.cookie = "birthtime=-2211667760; path=/";
В консоли JavaScript вашего браузера, например, https://store.steampowered.com/app/271590/
(GTA V)
Вы можете поэкспериментировать с lastagecheckage
birthtime
файлами cookie и, перейдя в режим «инкогнито» и просмотрев файлы cookie на вкладке «Приложение» или «Сеть» в среде отладки в заголовке с ограниченным возрастом. Тем не менее, это должно сработать.