登录一个网站并浏览另一个页面
我有一个Python 2的脚本,用于登录到网页,然后向内移动以访问指向同一网站但指向不同页面的几个文件。 Python 2让我用我的凭证打开网站,然后创建一个opener.open()
以保持可用的连接导航到其他页面。登录一个网站并浏览另一个页面
下面是在Python 2工作代码:
$Your admin login and password
LOGIN = "*******"
PASSWORD = "********"
ROOT = "https:*********"
#The client have to take care of the cookies.
jar = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(jar))
#POST login query on '/login_handler' (post data are: 'login' and 'password').
req = urllib2.Request(ROOT + "/login_handler",
urllib.urlencode({'login': LOGIN,
'password': PASSWORD}))
opener.open(rep)
#Set the right accountcode
for accountcode, queues in QUEUES.items():
req = urllib2.Request(ROOT + "/switch_to" + accountcode)
opener.open(req)
我需要做在Python 3我与请求模块和urllib的尝试同样的事情,但我虽然可以建立在第一次登录,我不知道如何保持开启者浏览网站。我找到了OpenerDirector,但似乎我不知道该怎么做,因为我还没有达到我的目标。
我已经使用这个Python 3代码来获得所需的结果,但不幸的是我无法获得csv文件来打印它。 enter image description here
问题:我不知道如何保持开启器浏览网站。
的Python 3.6»文档urllib.request.build_opener
使用基本的HTTP认证:
import urllib.request # Create an OpenerDirector with support for Basic HTTP Authentication... auth_handler = urllib.request.HTTPBasicAuthHandler() auth_handler.add_password(realm='PDQ Application', uri='https://mahler:8092/site-updates.py', user='klem', passwd='kadidd!ehopper') opener = urllib.request.build_opener(auth_handler) # ...and install it globally so it can be used with urlopen. urllib.request.install_opener(opener) f = urllib.request.urlopen('http://www.example.com/login.html') csv_content = f.read()
我的问题是因为我必须在继续浏览该网站使用的用户名和密码,然后日志后(这就是为什么揭幕战)和然后下载文件。 –
检查我的评论如下.. –
_ **它没有工作** _没有帮助,检查响应错误或代码你。你是否已经认识到登录成功了? **请**不要使用“答案”作为您的评论,相应地编辑您的问题。 **请不要使用图片[编辑]您的问题添加您当前的'Python3'。 – stovfl
使用Python请求库为Python 3和会话。 http://docs.python-requests.org/en/master/user/advanced/#session-objects
一旦你登录你的会话将被自动管理。你不需要创建你自己的饼干罐。以下是示例代码。
s = requests.Session()
auth={"login":LOGIN,"pass":PASS}
url=ROOT+/login_handler
r=s.post(url, data=auth)
print(r.status_code)
for accountcode, queues in QUEUES.items():
req = s.get(ROOT + "/switch_to" + accountcode)
print(req.text) #response text
不幸的是,它也没有工作,我开始阅读之前无法完成所需的登录。 –
您是否适当地更改了参数?用户名和密码。 – specialscope
是的,我做了,但看起来我无法完成认证。密码和用户都可以,因为每次我尝试用我的浏览器工作 –
请出示你的Python 3代码和错误你 –