igor_89squad
@igor_89squad
Python

Как нажать кнопку на сайте, парсинг?

У меня есть парсер (не ругайте за это), он делает работу нормально, но возникла проблема которую решить не получается. Я не могу нажать на кнопку сайта. Я использую selenium чтобы нажать на кнопку, но для моей задачи это не удобно. Посоветуйте чем еще можно нажимать кнопки сайтов и желательно чтобы браузер не открывался. Или же помогите с ошибкой, она будет ниже кода.

Code
import requests
from bs4 import BeautifulSoup as BS
import re
import webbrowser
from selenium import webdriver 

def BUY_SK(url):
    r = requests.get(url)
    html = BS(r.content, 'html.parser')
    #hidden_tags = str(html.find("input", {"type": "hidden"}))[50:][:-3]
    #webbrowser.open(url, new=2)
    driver = webdriver.Firefox()
    driver.get(url)
    element = driver.find_element_by_css_selector('.snap._color.buy-user-good')
    element.click() # Ошибка из-за этого элемента



def SKINKEEN():
    regular = re.compile(r'<a\s+(?:[^>]*?\s+)?href=([""])(.*?)\1')

    r = requests.get('https://skinkeen.ru/')
    html = BS(r.content, 'html.parser')

    for el in html.select('.item_view'):
        title = el.select('.item_view__info > span')
        title = title[0].text[8:][:-4]
        if int(title) >= 45:
            gun__ = all_links = el.find_all('a', href=True)
            gun = regular.split(str(gun__[0]))
            gun__info_ = html.select('.item_view > a')

            print('\n[INFO] Найдено подходящие оружие! Скидка', str(title) + '%\n', gun__info_[0].text)
            print('https://skinkeen.ru/' + str(gun[2]), '\n')

            BUY_SK('https://skinkeen.ru/' + str(gun[2]))

        else:
            print('[INFO] Оружие не подходит: Скидка', str(title) + '%')

SKINKEEN()


Ошибка
Traceback (most recent call last):
File "C:/py/CSGO Trade Bot v 0.1/CSGOTB.py", line 41, in
SKINKEEN()
File "C:/py/CSGO Trade Bot v 0.1/CSGOTB.py", line 36, in SKINKEEN
BUY_SK('https://skinkeen.ru/' + str(gun[2]))
File "C:/py/CSGO Trade Bot v 0.1/CSGOTB.py", line 15, in BUY_SK
element.click()
File "C:\py\CSGO Trade Bot v 0.1\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 80, in click
self._execute(Command.CLICK_ELEMENT)
File "C:\py\CSGO Trade Bot v 0.1\venv\lib\site-packages\selenium\webdriver\remote\webelement.py", line 633, in _execute
return self._parent.execute(command, params)
File "C:\py\CSGO Trade Bot v 0.1\venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "C:\py\CSGO Trade Bot v 0.1\venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.ElementClickInterceptedException: Message: Element is not clickable at point (539,646) because another element obscures it
  • Вопрос задан
  • 1834 просмотра
Решения вопроса 1
@acwartz
Тут должна быть ваша реклама.
Посмотреть устройство DOM браузером, понять что менять на странице чтобы нужный элемент не был obscured, скриптом выполнить те же действия, профит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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