更新:我确实在API中找到了我需要的信息,而不是这个特定问题的答案,而是我软件的解决方案。
我尝试登录网页,导航到另一个页面,然后解析HTML表格。
如果您使用浏览器在未登录的情况下转到目标页面,则会将您带到默认登录页面,无论如何您必须导航到目标页面。这就是为什么我有两个URL调用。
import requests
payload = {'username' : 'USER', 'password' : 'PASSWORD'}
with requests.Session() as s:
p = s.post('login_url', data=payload)
r = s.get('target_url')
当您导航到登录页面时,它通常会转到另一个页面以检查您的浏览器,然后再转到登录页面。我收到了来自' p':
的回复<span data-translate="checking_browser">Checking your browser before accessing</span> website.</h1>
<p data-translate="process_is_automatic">This process is automatic. Your browser will redirect to your requested content shortly.</p>
<p data-translate="allow_5_secs">Please allow up to 5 seconds…</p>
...这只是告诉您等待重定向并登录的页面。有没有办法处理它以便它等待可以登录的页面?我需要在代码中每20分钟进行一次这样的调用,所以如果我能保持登录状态并且仅访问目标页面,那就更好了。
答案 0 :(得分:2)
这个“检查您的浏览器”消息看起来像CloudFlare功能,旨在阻止人们以这种方式访问网站 - 您需要从服务器运行一些javascript来传递这个障碍(想法是有人访问浏览器中的网站将自动运行javascript - 如果他们使用机器人来抓取网站,它将会失败)
。如果该网站有API,切换到使用这将是我的第一个建议。
否则,there are packages to help you get around this issue,但由于障碍明确地阻止了这种使用,因此当CloudFlare进行更改时,它们可能会停止工作。