2016-10-22 106 views
1

我想写一个脚本,它将登录到我的FT.com帐户并为我提供一些数据。用Python的请求登录FT.com

第一个障碍显然是登录。我正在使用Pythons请求库。

这里是我的代码:

#!/usr/bin/env python 
import requests 


# log into FT website 
log_in_url = 'https://accounts.ft.com/login' 
my_email = '[email protected]' 
my_pass = 'mypassword' 
data = {'email': my_email, 
     'password': my_pass, 
} 

with requests.Session() as session: 
    log_in_request = session.post(log_in_url, data=data) 
    # prints log-in page with error about contacting cus. service 
    print log_in_request.content 

这只是重定向我回到登录页面。它不会说'不正确的细节'或任何东西(它们绝对正确)。它只是不会让我登录。我怀疑我的POST请求有什么问题 - 就像我缺少标头或cookie等等。

有人知道可能会发生什么吗?

干杯,

院长

+0

我建议你打开你的Web浏览器的开发者工具,检查其头/数据登录时发送,图在需要的地方出现,然后尝试用请求重现它 – agg3l

+0

尝试使用Session对象首先进入页面。 –

+0

尝试了这些和其他一些事情。这个网站似乎没有任何工作。 –

回答

2

如果从FT网站复制原创内容或刮不可忽略的数据量,你就自然会阻止,你会违反他们的T & CS(不提及版权法)。金融时报部分由广告出资。如果你通过使用Python来绕过这些,你正在侵蚀一个合法的收入来源。

我使用此脚本将我的监视列表拖入Excel中,我曾使用复制/粘贴操作。我不会将其用于分析或阅读文章。我通过浏览器阅读FT,每天都会产生相当程度的广告查看流量。

请不要滥用此功能。如果这样做,很可能会导致每个付费用户都被阻止在Python中执行极少量的导航操作。

from robobrowser import RoboBrowser 

browser = RoboBrowser(history=True) 

url='https://accounts.ft.com/login?location=https%3A%2F%2Fwww.ft.com%2F' 

browser.open(url) 
form=browser.get_form() 
form['email']="" 
form['password']="" 
browser.session.headers['Referer'] = url 
browser.submit_form(form) 

,如果你想进行数据挖掘等等有一个FT开发者计划: https://developer.ft.com/

+0

感谢您的回复!我完全没有意图违反版权法,甚至根本没有共享这个剧本。我的意图是简单地下载每日报纸作为PDF(FT提供作为一个按钮),并在准备好时发邮件给我。我会给这个镜头,看看它是否有效。 –

+0

似乎合理。请你能提高我的意见并解决问题吗?目前我的priveleges在stackoverflow上是垃圾... – langbourne

+0

(假设它当然适合你!) – langbourne