首页 > 解决方案 > 如何从python中的多次重定向url中获取目标url?

问题描述

我正在尝试制作一个网络刮板。我想从查询 URL 中获取目标 URL。但它会重定向很多次。

这是我的网址:

https://data.jw-api.org/mediator/finder?lang=INS&item=pub-jwb_201812_16_VIDEO

目标网址应为:

https://www.jw.org/ins/library/videos/#ins/mediaitems/VODOrgLegal/pub-jwb_201812_16_VIDEO

但我将https://www.jw.org/ins/library/videos/?item=pub-jwb_201812_16_VIDEO&appLanguage=INS其作为重定向的 URL。

我试过这段代码:

import requests

url = 'https://data.jw-api.org/mediator/finder?lang=INS&item=pub-jwb_201812_16_VIDEO'

s = requests.get(url)
print(s.url)

标签: python-3.xredirectweb-scrapingpython-requests

解决方案


重定向是使用 JavaScript 进行的

它不是服务器重定向,因此请求不会跟随它。

您可以使用 Selenium 获取 URL

from selenium import webdriver
import time


browser = webdriver.Chrome()
url = 'https://data.jw-api.org/mediator/finder?lang=INS&item=pub-jwb_201812_16_VIDEO'
browser.get(url)
time.sleep(5)
print (browser.current_url)
browser.quit()

输出

https://www.jw.org/ins/library/videos/#ins/mediaitems/VODOrgLegal/pub-jwb_201812_16_VIDEO

如果您正在构建刮板,我建议您查看 scrapy-splash https://github.com/scrapy-plugins/scrapy-splash或 requests-html https://github.com/psf/requests-html


推荐阅读