ERROR requests return Response [503] If LINK link die or LINK live.I use bs4 python

ERROR requests return Response [503] If LINK link die or LINK live.I use bs4 python

我想从亚马逊抓取数据,请求响应错误 503,404,200 然后我会检查 link 生死攸关。但是当前 link 死亡或 link 存活或 link 未找到将响应 503.i 不知道如何检查 link?如果响应 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))

如果您将字符串硬编码到变量 link,则不需要将其强制转换为类型 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

此外,有些网站不允许请求。您可以通过添加 headers 和 user-agent 并使用 session 来尝试变得更 "human"。 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)