首页 > 解决方案 > 强制我的 python URL 请求通过重定向

问题描述

我试图从中抓取的 URL 是一个实际的 URL:

https://www.lineups.com/nfl/player-stats/ezekiel-elliott

但是,如果我尝试请求此站点,我将被 (301) 重定向。如何强制访问此 URL?

我已经尝试过转:allow_redirects = False

url = "https://www.lineups.com/nfl/player-stats/Matt-Ryan"

r = requests.get(url, allow_redirects=False)

print(r.status_code, r.headers['Location'])  # 301 /nfl/player-stats
print(r.url)  # https://www.lineups.com/nfl/player-stats/Matt-Ryan


soup = BeautifulSoup(r.text, 'lxml')
print(soup)  

永久移动。重定向到 /nfl/player-stats

标签: pythonredirectweb-scrapingpython-requests

解决方案


在将 Session 与 User-Agent 一起使用时,我得到了 200 个响应和正确的内容。下面的代码有效。

import requests

session = requests.Session()

session.headers.update({'User-Agent': "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:68.0) Gecko/20100101 Firefox/68.0"})

resp = session.get("https://www.lineups.com/nfl/player-stats/ezekiel-elliott")

print(resp.status_code)

print(resp.text)


推荐阅读