Fist Я должен сказать, что я совершенно новый для веб-соскабливания с Python. Я пытаюсь очистить данные, используя эти строки кодов
import requests
from bs4 import BeautifulSoup
baseurl ='https://name_of_the_website.com'
html_page = requests.get(baseurl).text
soup = BeautifulSoup(html_page, 'html.parser')
print(soup)
В качестве вывода я не получаю ожидаемую страницу Html, а другую страницу Html, в которой говорится: Misbehaving Content Scraper. Используйте robots.txt. Ваш IP-адрес ограничен лимитом
Чтобы проверить проблему, я написал:
try:
page_response = requests.get(baseurl, timeout =5)
if page_response.status_code ==200:
html_page = requests.get(baseurl).text
soup = BeautifulSoup(html_page, 'html.parser')
else:
print(page_response.status_code)
except requests.Timeout as e:
print(str(e))
Затем я получаю 429 (слишком много запросов).
Что я могу сделать для решения этой проблемы? Означает ли это, что я не могу распечатать Html страницы и не мешает ли я очистить содержимое страницы? Должен ли я вращать IP-адрес?
Если вы только нажимаете страницу один раз и получаете 429
возможно, вы не слишком сильно наносите им слишком много. Вы не можете быть уверены, что ошибка 429
точна, это просто то, что вернулся их веб-сервер. Я видел, как страницы возвращают код ответа 404, но страница была в порядке, а 200 ответов на законных недостающих страницах - просто неправильно сконфигурированный сервер. Они могут просто вернуть 429
из любого бота, попробуйте сменить User-Agent
на Firefox, Chrome или "Robot Web Scraper 9000" и посмотреть, что вы получаете. Как это:
requests.get(baseurl, headers = {'User-agent': 'Super Bot 9000'})
объявить себя ботом или
requests.get(baseurl, headers = {'User-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.186 Safari/537.36'})
Если вы хотите больше подражать браузеру. Некоторые сайты возвращают лучший код с возможностью поиска, если вы просто говорите, что вы бот, другие - наоборот. Это в основном дикий дикий запад, нужно просто попробовать разные вещи.
Если вы на самом деле их сильно ударяете, вам нужно спать между звонками. Это ответ на серверный сервер, полностью контролируемый ими. Вы также захотите изучить, как ваш код взаимодействует с файлом robots.txt
, который обычно находится в корневом каталоге веб-сервера с правилами, по которым вам будет нужен ваш паук.
Вы можете прочитать об этом здесь: Parsing Robots.txt в python
Spidering the web - забава и сложность, просто помните, что вы можете быть заблокированы в любое время любым сайтом по любой причине, вы их гость. Так протрите красиво :)
cookie
и, если вы его не принимаете, они предполагают, что вы бот, и иногда отклоняют ваш запрос. Тем не менее, большинство сайтов хотят быть «паучками», именно так они генерируют трафик. Вы также всегда можете связаться с веб-мастером (если это небольшой сайт). Если вы нашли мой ответ полезным, примите его :) и добро пожаловать в StackOverflow! :)