#python-3.x #web-scraping #beautifulsoup
#python-3.x #очистка веб-страниц #beautifulsoup
Вопрос:
Надеюсь, у кого-нибудь есть ответ.
Я пытаюсь очистить конкретный веб-сайт.
Проблема в том, что requests.get(url) очищает все очень быстро.
Поэтому я заблокирован.
Является ли это способом замедления запросов.get (url)?
Спасибо за вашу помощь.
from bs4 import BeautifulSoup
import requests
url = 'website.fr'
response = requests.get(url)
print(response)
Распечатать результат:
Когда вы использовали этот веб-сайт, что-то в вашем браузере или поведении заставило нас подумать, что вы, возможно, бот. Решите приведенную ниже капчу, чтобы продолжить просмотр сайта.
Ответ №1:
Вы должны настроить тайм-аут и посмотреть, работает ли скребок для вас.
r = requests.get('https://github.com', timeout=5)
https://docs.python-requests.org/en/latest/user/advanced/#timeouts
Ответ №2:
Обратите внимание, что пока нет информации об URL, ее трудно воспроизвести
Первым подходом может быть добавление некоторых headers
к вашему запросу — это не замедлит работу, а укажет, что «будет браузер». Альтернативный подход заключается в использовании selenium.
Пример
from bs4 import BeautifulSoup
import requests
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.45 Safari/537.36",
"X-Amzn-Trace-Id": "Root=1-61acac03-6279b8a6274777eb44d81aae",
"X-Client-Data": "CJW2yQEIpLbJAQjEtskBCKmdygEIuevKAQjr8ssBCOaEzAEItoXMAQjLicwBCKyOzAEI3I7MARiOnssB" }
url = 'https://www.france.fr/fr'
response = requests.get(url, headers = headers)
print(response)
Вывод
<Response [200]>
Если вы повторяете URL-адреса, вы также можете добавить такую же задержку с time
помощью модуля:
from bs4 import BeautifulSoup
import requests, time
...
for url in urls:
time.sleep(3)
response = requests.get(url, headers = headers)
...
Комментарии:
1. Спасибо за вашу помощь. Есть ли способ узнать, какой заголовок отправляется в источнике?
2. Это всегда зависит от того, как вы взаимодействуете со страницей и как работает обнаружение ботов на сервере… Вы можете увидеть заголовки, которые отправляет ваш браузер, на вкладке сеть в ваших инструментах разработчика