Как мне вставить скрипт Backoff в мою веб-страницу
Я хочу использовать пакет "Backoff" в своем веб-цикле и не могу заставить его работать. Куда мне его вставить? Как заставить "r = запросы..." все еще распознаваться?
Я пытался вставить утверждение в свой код различными способами, и оно не работает. Я хочу быть в состоянии использовать это для целей пакета. Спасибо!
код для вставки
@backoff.on_exception(backoff.expo,
requests.exceptions.RequestException,
max_time=60)
def get_url(what goes here?):
return requests.get(what goes here?)
СУЩЕСТВУЮЩИЙ КОД:
import os
import requests
import re
import backoff
asin_list = ['B079QHML21']
urls = []
print('Scrape Started')
for asin in asin_list:
product_url = f'https://www.amazon.com/dp/{asin}'
urls.append(product_url)
base_search_url = 'https://www.amazon.com'
scraper_url = 'http://api.scraperapi.com'
while len(urls) > 0:
url = urls.pop(0)
payload = {key, url} #--specific parameters
r = requests.get(scraper_url, params=payload)
print("we got a {} response code from {}".format(r.status_code, url))
soup = BeautifulSoup(r.text, 'lxml')
#Scraping Below#
Я ожидаю, что код "Backoff" будет работать так, как он рассчитан в коде, чтобы повторить 500 ошибок и не иметь сбоев
1 ответ
Решение
Вместо того, чтобы звонить напрямую:
requests.get(scraper_url, params=payload)
+ Изменить get_url
сделать именно это, и позвонить get_url
:
@backoff.on_exception(backoff.expo,
requests.exceptions.RequestException,
max_time=60)
def get_url(scraper_url, payload):
return requests.get(scraper_url, params=payload)
и в вашем коде вместо:
r = requests.get(scraper_url, params=payload)
делать:
r = get_url(scraper_url, payload)