Я пытаюсь очистить веб-сайты, и иногда я получаю эту ошибку, и это связано с тем, что я случайно получаю эту ошибку, но после повторной попытки я не получаю ошибку.
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='www.somewebsite.com', port=443): Read timed out. (read timeout=None)
Мой код выглядит как следующий
from bs4 import BeautifulSoup
from random_user_agent.user_agent import UserAgent
from random_user_agent.params import SoftwareName, OperatingSystem
import requests
software_names = [SoftwareName.CHROME.value]
operating_systems = [OperatingSystem.WINDOWS.value, OperatingSystem.LINUX.value]
user_agent_rotator = UserAgent(software_names=software_names, operating_systems=operating_systems, limit=100)
pages_to_scrape = ['https://www.somewebsite1.com/page', 'https://www.somewebsite2.com/page242']
for page in pages_to_scrape:
time.sleep(2)
page = requests.get(page, headers={'User-Agent':user_agent_rotator.get_random_user_agent()})
soup = BeautifulSoup(page.content, "html.parser")
# scrape info
Как вы можете видеть из моего кода, я даже использую Time, чтобы перевести мой сценарий на пару секунд, прежде чем запросить другую страницу. Я также использую случайный user_agent. Я не уверен, смогу ли я сделать что-нибудь еще, чтобы убедиться, что я никогда не получаю ошибку Тайм-аут чтения.
Я также сталкивался с этим , но, похоже, они предлагают добавить дополнительные значения к заголовки, но я не уверен, что это универсальное c решение, потому что это может быть необходимо указать c от веб-сайта к веб-сайту. Я также прочитал на другом SO Post , что мы должны base64 запрос и повторить попытку. Это пошло мне на ум, так как я понятия не имел, как это сделать, и у человека не было примера, приведенного здесь.
Любой совет тех, кто имеет опыт в очистке, был бы очень признателен.