#python #web-scraping #beautifulsoup #proxy #selenium-chromedriver
#python #веб-очистка #beautifulsoup #прокси #selenium-chromedriver
Вопрос:
Я хочу создать веб-сайт немецкой недвижимости immobilienscout24.de . Он не предназначен для коммерческого использования или публикации, и я не собираюсь рассылать спам на сайт, это просто для практики кодирования. Я хотел бы написать инструмент python, который автоматически загружает HTML-код данного immobilienscout24.de сайты. Я пытался использовать beautifulsoup для этого, однако проанализированный HTML не отображает содержимое, Но спрашивает, являюсь ли я роботом и т. Д., Что Означает, что мой веб-сканер был обнаружен и заблокирован (я могу получить доступ к сайту в Firefox просто отлично). Я установил референт, задержку и случайный пользовательский агент. Что еще я могу сделать, чтобы избежать обнаружения (например, вращающиеся прокси, случайные клики, безголовый chrome, этот скрипт, другие инструменты веб-обработки, которые не обнаруживаются …)? Вещи, которые я нашел в Интернете, которые могут быть причиной блокировки:
- отсутствующие / неправильные файлы cookie
- отсутствует поддержка javascript / другие проблемы с javascript
- нет щелчков / движений мыши
- неполный / нереалистичный заголовок
- Отпечатки пальцев SSL / TLS и другие экзотические вещи для моего понимания
Если у кого-то есть рабочее решение, с помощью которого можно очистить сайт, скажем, 10 раз, не будучи заблокированным, я был бы очень благодарен. Вот мой код на данный момент:
from bs4 import BeautifulSoup
import numpy
import time
from fake_useragent import UserAgent
def get_html(url, headers): #scrapes and parses the HTML of a given URL while using custom header
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
return soup
ua = UserAgent()
headers = {
"Accept": "text/html,application/xhtml xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "de,de-DE;q=0.8,en;q=0.6",
"Dnt": "1",
"Host": "https://www.immobilienscout24.de/",
"Upgrade-Insecure-Requests": "1",
"User-Agent": ua.random,
}
delays = [3, 5, 7, 4, 4, 11]
time.sleep(numpy.random.choice(delays))
test = get_html("https://www.immobilienscout24.de/Suche/de/baden-wuerttemberg/heidelberg/wohnung-kaufen?enteredFrom=one_step_search", headers)```
Ответ №1:
этот код все еще нуждается в дополнительной работе, но я предполагаю, что запросы на импорт не работают, потому что ему нужно запускать js-код, но если вы используете что-то вроде selenium, он должен работать, потому что он может запускать js-код.Также у request_html есть puppeteer, похожий на selenium .
from requests_html import HTMLSession
import re
#from fake_useragent import UserAgent
#create the session
#ua = UserAgent()
session = HTMLSession()
#define our URL
url = 'https://www.immobilienscout24.de/Suche/de/baden-wuerttemberg/heidelberg/wohnung-kaufen'
#use the session to get the data
r = session.get(url)
#Render the page, up the number on scrolldown to page down multiple times on a page
r.html.render(sleep=1,timeout = 30, keep_page=True, scrolldown=1)
r.html.page.screenshot({'C:/Users/program/Desktop/help': 'example.png'})
print(r.text)
session.close()
Комментарии:
1. Спасибо! К сожалению, я запустил его, и это все равно приводит к блоку: (