Я убираю сообщения из Wykop.pl ('Польский Reddit'), просматривая несколько страниц, которые были возвращены, когда я искал свое ключевое слово на сайте.Я написал цикл для итерации моего целевого контента для каждой страницы;однако цикл завершается на определенных страницах (последовательно) с ошибкой «Ошибка HTTP 413: запрос слишком велик».
Я пытался очистить проблемные страницы по отдельности, но одно и то же сообщение об ошибке продолжало повторяться.Чтобы обойти это, я должен был установить свои диапазоны вручную для сбора данных, но ценой пропуска широкого диапазона данных, и я хотел бы знать, есть ли решение Pythonic для решения этой ошибки.Я также пробовал делать более длинные паузы, так как, возможно, я рискнул отправить слишком много запросов, но, похоже, это не так.
from time import sleep
from random import randint
import requests
from requests import get
from bs4 import BeautifulSoup
from mtranslate import translate
from IPython.core.display import clear_output
from mtranslate import translate
posts = []
votes = []
dates = []
images = []
users = []
start_time = time()
requests = 0
pages = [str(i) for i in range(1,10)]
for page in pages:
url = "https://www.wykop.pl/szukaj/wpisy/smog/strona/" + page + "/"
response = get(url)
# Pause the loop
sleep(randint(8,15))
# Monitor the requests
requests += 1
elapsed_time = time() - start_time
print('Request:{}; Frequency: {} requests/s'.format(requests, requests/elapsed_time))
clear_output(wait = True)
# Throw a warning for non-200 status codes
if response.status_code != 200:
warn('Request: {}; Status code: {}'.format(requests, response.status_code))
# Break the loop if the number of requests is greater than expected
if requests > 10:
warn('Number of requests was greater than expected.')
break
soup = BeautifulSoup(response.text, 'html.parser')
results = soup.find_all('li', class_="entry iC")
for result in results:
# Error handling
try:
post = result.find('div', class_="text").text
post = translate(post,'en','auto')
posts.append(post)
date = result.time['title']
dates.append(date)
vote = result.p.b.span.text
vote = int(vote)
votes.append(vote)
user = result.div.b.text
users.append(user)
image = result.find('img',class_='block lazy')
images.append(image)
except AttributeError as e:
print(e)
Если бы я мог запустить скрипт сразу, яустановил бы диапазон от 1 до 163 (так как у меня есть результаты на 163 страницы постов с упоминанием моего ключевого слова интереса).Поэтому мне пришлось устанавливать меньшие диапазоны для поэтапного сбора данных, но опять же за счет пропуска на страницах данных.
В качестве непредвиденного обстоятельства я могу выбрать из выделенных проблемных страниц загруженные HTML-документы на моем рабочем столе.