如何在网页抓取中获得重定向的URL?

2024-03-28 10:13:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我想要的只是请求实际url后重定向的url。这是实际的urlhttps://metric.picodi.net/us/r/19761,当我在浏览器上使用此url点击enter时,它会将我重定向到如下url

https://www.overstock.com/?AID=11557584&PID=9096967&SID=5e479aea42dd4d2c85183aa2&cjevent=2e4090483d7d3c3db27e63d14903c327c7718b978cf0dfa24&entrytrigger=noshow&exittrigger=noshow&fp=F&utm_source=cj&utm_medium=affiliates

我尝试过这样实现它,但它给了我相同的url

>>> import requests
>>> r = requests.get('https://metric.picodi.net/us/r/19761', allow_redirects=True)
>>> print(r.url)
https://metric.picodi.net/us/r/19761
>>> r.history
[]

我也尝试过以下方法:

>>> r = requests.head('https://metric.picodi.net/us/r/19761', allow_redirects=True)
>>> print(r.url)
https://metric.picodi.net/us/r/19761
>>> r.history
[]

Tags: httpstrueurlnetrequestsmetrichistory重定向
1条回答
网友
1楼 · 发布于 2024-03-28 10:13:37

这是由于JavaScript在页面加载后动态处理重定向

因此,您可以使用Selenium实现这一点

如下所示:

from selenium import webdriver
from selenium.webdriver.firefox.options import Options

options = Options()
options.add_argument(' headless')
driver = webdriver.Firefox(options=options)
link = 'https://metric.picodi.net/us/r/19761'

driver.get(link)
print(driver.current_url)

driver.quit()

输出:

https://www.overstock.com/?AID=11557584&PID=9096967&SID=5e63c10642dd4d26f7549875&cjevent=121071440d708c3db27e63d55903c327c7718b9633548769c&entrytrigger=noshow&exittrigger=noshow&fp=F&utm_source=cj&utm_medium=affiliates

Note that you might use requests_html which will be a good friend to render the JavaScript for you.

相关问题 更多 >