【发布时间】:2017-12-29 12:25:02
【问题描述】:
我有一个巨大的 URL 列表,它们重定向到不同的 URL。 我在 for 循环中从列表中提供它们,并尝试打印重定向的 URL
第一个重定向的 URL 打印正常。 但是从第二个开始 - requests 只是停止给我重定向的 URL,而只是打印给定的 URL
我尝试使用urllib、urllib2 和mechanize 实现。
他们给第一个重定向的 url 很好,然后在第二个时抛出一个错误并停止。
谁能告诉我为什么会这样?
以下是伪代码/实现:
for given_url in url_list:
print ("Given URL: " + given_url)
s = requests.Session()
r = requests.get(given_url, allow_redirects=True)
redirected_url = r.url
print ("Redirected URL: " + redirected_url)
输出:
Given URL: www.xyz.com
Redirected URL: www.123456789.com
Given URL: www.abc.com
Redirected URL: www.abc.com
Given URL: www.pqr.com
Redirected URL: www.pqr.com
【问题讨论】:
-
你看过
r.status_code和r.text吗?也许其他网站不喜欢您的User-Agent字符串 - 即他们不想要来自机器人的请求。 -
当我使用 Mechanize - 我试过 br.set_handle_robots(False)。
-
请查看
r.status_code和r.text以查看是否有任何消息提示您被阻止。br.set_handle_robots(False)只是指示mechanize忽略该站点的robots.txt。它对网站是否会阻止您没有影响。 -
刚试过 r.status_code 和 r.text。我收到 400 和 401 条消息
-
当我在浏览器中打开它们时 - 我可以在不同的选项卡中同时打开所有重定向的链接。我也尝试传递 cookie 值,不行。有什么办法可以避免代码 400 和 401。这是我们的 API,我们应该可以访问。不知道为什么我在获取第一个重定向 URL 后收到该消息
标签: python python-requests urllib2 mechanize urllib