在定时延迟或重定向后获取最终URL

时间:2017-11-17 18:09:27

标签: python web-scraping beautifulsoup python-requests

我正在尝试抓一个网站,但是当我打开网页时,它有5秒的重定向延迟,即你必须等待5秒然后加载真实页面。 我试过以下代码。

from bs4 import BeautifulSoup
import time
import requests

r=requests.get("https://etherscan.io/address/0xc257274276a4e539741ca11b590b9447b26a8051",timeout=6)
time.sleep(5) 
print(r.history)

data=r.text

soup=BeautifulSoup(data)

print(soup.prettify())

但是当我运行代码时,我得到了重定向页面,而不是最终页面。谢谢你的帮助

2 个答案:

答案 0 :(得分:1)

看起来etherscan.io受Cloudflare保护,而Cloudflare导致您看到的延迟重定向。 Cloudflare的目的之一是防止僵尸程序向网站发出自动请求(这看起来很像你正在做的事情)。

绕过Cloudflare并非易事。首先,您需要让您的请求看起来像是来自真正的浏览器 - 这意味着您用来发出这些请求的工具需要提供与真实浏览器相同的请求标头,处理类似的Cookie浏览器会像浏览器那样运行javascript等等。

即使您成功完成上述所有操作,Cloudflare也可能会在一段时间内提出一定数量的请求后阻止您的请求(或质疑他们)。

答案 1 :(得分:0)

如果你真的真的开始使用硒或API以外的东西(这是最有意义的),你可以看一下this。它是一个用于处理cloudflare站点的刮板,但它需要运行其他一些东西(最值得注意的是Node.js)。虽然这很简洁,但是当有更简单的解决方案时,这似乎很痛苦。

相关问题