首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何将退避脚本插入到我的web抓取中

如何将退避脚本插入到我的web抓取中
EN

Stack Overflow用户
提问于 2019-06-11 03:35:07
回答 1查看 83关注 0票数 1

我想在我的网页抓取中使用包"Backoff“,但是我不能让它工作。我该把它插入哪里呢?如何获得"r = requests...“还能被认出吗?

我尝试过以各种方式将该语句放入我的代码中,但它不起作用。我希望能够将其用于包的预期目的。谢谢!

要插入的代码

代码语言:javascript
复制
@backoff.on_exception(backoff.expo,
                      requests.exceptions.RequestException,
                      max_time=60)

def get_url(what goes here?):
    return requests.get(what goes here?)

现有代码:

代码语言:javascript
复制
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#

我希望有“退避”代码的工作,因为它在代码中的设计,以重试500个错误,没有失败

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 03:38:55

而不是直接调用:

代码语言:javascript
复制
requests.get(scraper_url, params=payload)

更改get_url以执行此操作,并调用get_url

代码语言:javascript
复制
@backoff.on_exception(backoff.expo,
                      requests.exceptions.RequestException,
                      max_time=60)

def get_url(scraper_url, payload):
    return requests.get(scraper_url, params=payload)

在你的代码中,而不是:

代码语言:javascript
复制
r = requests.get(scraper_url, params=payload)

执行以下操作:

代码语言:javascript
复制
r = get_url(scraper_url, payload)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56532528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档