【问题标题】:ERROR requests return Response [503] If LINK link die or LINK live.I use bs4 pythonERROR requests return Response [503] If LINK link die or LINK live.I use bs4 python
【发布时间】:2018-11-16 02:27:46
【问题描述】:

我想从亚马逊抓取数据,请求响应错误 503,404,200,然后我将检查链接是否死亡。但是当前链接死亡或链接未找到将响应 503。我不知道如何检查链接?如果响应 200,那么将为我的软件清除。谢谢你的帮助!!!!

link = "https://www.amazon.com/dp/B07K896272"enter code here
browser = webdriver.Firefox(executable_path=r'D:\PythonTool\AmzTool\geckodriver.exe')
browser.get(link)
res = requests.get(str(link).strip())
print(str(res))

【问题讨论】:

    标签: python-3.x beautifulsoup python-requests amazon


    【解决方案1】:

    如果您将字符串硬编码为变量链接,则无需将其强制转换为 str 类型。

    requests.get(link) // is good enough.
    

    另外,如果你想打印响应内容,

    print(res.text)
    

    不是很明白这个问题,但是 您可以通过以下方式检查响应状态:

    res = requests.get(link)
    if res.status_code:
        #Bad Code - 400s/500s
    
    else:
        #All good
    

    此外,某些网站不允许请求。您可以通过添加带有用户代理的标头并使用会话来尝试变得更加“人性化”。 Session 将保留 cookie。 (有点让它有状态)

    session = requests.session()
    session.headers['User-Agent'] = "YOUR USER AGENT HERE"
    session.get("https://www.amazon.com/")
    
    res = session.get(link)
    print(res.text)
    

    某些网站需要 javascript 才能加载页面。如果是这种情况,您将需要使用硒。使用请求不会加载 javascript 页面。

    或者如果你想先用 javascript 加载页面,并且想使用请求:

    session = requests.session()
    session.headers['User-Agent'] = "YOUR USER AGENT HERE"
    browser = webdriver.Firefox(executable_path=r'D:\PythonTool\AmzTool\geckodriver.exe')
    browser.get(link)
    for cookie in driver.get_cookies():
        c = {cookie['name']: cookie['value']}
        session.cookies.update(c)
    browser.close()
    res = session.get(link)
    print(res.text)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-19
      • 2014-05-31
      • 1970-01-01
      • 2022-06-13
      • 1970-01-01
      • 1970-01-01
      • 2022-08-09
      • 1970-01-01
      相关资源
      最近更新 更多