Как сделать, чтобы при парсинге bs4 как то надо нажать на кнопку
так как я учусь пасингу в bs4
Я попробовал много способов, но все они не помогают мне обойти защиту
Язык не важен
важен алгоритм. Как мне это сделать
Язык не важен, важен алгоритм. Как мне это сделать? Не предлагайте сторонние API для решения капчи.
Вход в аккаунт всегда выполнен в браузере, сессии не прерываются, возможно ли написать программу без авторизации на сайте, чтобы она открывала сразу закладку в браузере, например?
Интересует быстрый парсинг - зашел на сайт, посмотрел на код, минимум кода, скорость важна.
Было бы еще неплохо чтобы инструмент был гибким - то есть парсил бы любые сайты.
Или поделитесь пожалуйста Вашими инструментами
Как гугл понимает что один и тот же пользователь создает акки?
Можно ли это обойти? Как?
К сожалению я полный ноль в программировании
В общем задача довольно проста
Если кто-то подскажет в какую сторону двигаться (читать, смотреть), или может ну его к чертям, если это потребует года учебы? Или может через GPT сделать какой-то хитрый запрос?
Так как программирование мне не особо интересно и развиваться в этом направлении не планирую.
# EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
options = Options()
service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
driver = webdriver.Chrome(service=service, options=options)
url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
)
page_html = driver.page_source
print(page_html)
except TimeoutException:
print("Элемент не найден")
finally:
print('Программа завершена')
driver.quit()
from selenium import webdriver
from selenium.webdriver.firefox.service import Service
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import TimeoutException
options = Options()
service = Service(r'D:\project\geckodriver.exe')
driver = webdriver.Firefox(service=service, options=options)
url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
driver.get(url)
try:
element = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
)
page_html = driver.page_source
print(page_html)
except TimeoutException:
print("Элемент не найден")
finally:
print('Программа завершена')
driver.quit()
$ curl https://codeforces.com/
<!DOCTYPE html><html lang="en-US"><head><title>Just a moment...</title><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=Edge">
Пришел к тому что буду вручную гулять по нужным страницам и собирать инфу, но опять же встал вопрос как сохранять код незаметно.
// ==UserScript==
// @name Super script
// @namespace http://tampermonkey.net/
// @version 0.1
// @description Super script description
// @author Spamer
// @match *://*/*
// @grant none
// ==/UserScript==
(function() {
function savePageAsHTML() {
const htmlContent = document.documentElement.outerHTML;
const blob = new Blob([htmlContent], {type: 'text/html'});
const url = URL.createObjectURL(blob);
const a = document.createElement('a');
a.href = url;
a.download = 'page.html';
document.body.appendChild(a);
a.click();
document.body.removeChild(a);
URL.revokeObjectURL(url);
}
// load
window.addEventListener('load', () => {
savePageAsHTML();
});
// load + timer
window.addEventListener('load', () => {
setTimeout(savePageAsHTML, 10000);
});
})();
API должен убедиться что запросы получает с сайта а не из других источников (curl,postman,php).
Блокировать открытие сайта в эумляторов браузеров, например ломанный Selenium.
Остальные вопросы решает платная защита от Cloud Flare.
И возникает вопрос, а может ли сервер как то обнаруживать использование mitm proxy?
Вопрос: как по запросу (после отправки) посмотреть из каких источников этот ответ приходит?
Скрипт в целом работает, но работает медленно, а мне нужно проверить порядка 300.000 страниц. Подскажите пожалуйста, есть ли способы как то ускорить работу кода?