鱼C论坛

 找回密码
 立即注册
查看: 1592|回复: 7

[已解决]python2.7登陆网站程序如何修改为python3版本的?

[复制链接]
发表于 2017-9-14 09:47:47 | 显示全部楼层 |阅读模式
20鱼币
# -*- coding:gbk -*-

import json
import urllib
import urllib2
import cookielib
import datetime
import operator
import string
import threading
import time
import traceback
import hashlib
import sys

cookie = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookie))

first = 0

def do_login():
    timestamp = int(time.time())
    # print timestamp
    # return
    m2 = hashlib.md5()
    m2.update('此处输入密码')
    pwd = m2.hexdigest()
    postdata = urllib.urlencode({
        'loginType': 'user',
        'logonUsername': '此处输入用户名',
        'password': pwd,
        'timeStamp': timestamp,
        'rememberType': '30',
        'verificationCode': '',
    })
    req = urllib2.Request(
        url='https://www.tzbao.com/auth/loginSubmit',
        data=postdata
    )
    try:
        result = opener.open(req)
        print result.geturl()
        print '登录:ok'
        # result.read()
    except urllib2.HTTPError, e:
        print e.code, e.read()

do_login()

以上为python2.7的网页登陆文件,输入用户名,密码后可以成功登陆。

我打算用54讲的课后作业改为python 3程序。

import urllib.request
import http.cookiejar as hcj
import urllib.parse
import PIL

# -*- coding:gbk -*-

import json
import urllib.request
# import urllib2
# import cookielib
import datetime
import operator
import string
import threading
import time
import traceback
import hashlib
import sys

loginurl = 'https://www.tzbao.com/auth/loginSubmit'
cookie = hcj.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookie))

def do_login():
    timestamp = int(time.time()*1000)
    # print timestamp
    # return
    m2 = hashlib.md5()
    m2.update('此处输入密码'.encode('utf-8'))
    pwd = m2.hexdigest()
    data = {
        'loginType': 'user',
        'logonUsername': '此处输入用户名',
        'password': pwd,
        'timeStamp': timestamp,
        'rememberType': '30',
        'verificationCode': '',
    }
    req = opener.open(loginurl, urllib.parse.urlencode(data).encode('utf-8'))
    if req.geturl() == 'https://www.tzbao.com/index':
        print(req.geturl())

    print(req.geturl())

do_login():
   
感觉登陆不成功,因为并没有访问到成功登陆后能访问的内容,请问程序应如何修改。还有有什么简单的办法判断登陆是否成功呢?

因为用户名,密码涉及个人信息,没有发布。

可以通过以下链接注册获得用户名,密码编写调试程序:

http://www.tzbao.com/register?referrerCode=TZB006709
最佳答案
2017-9-14 09:47:48
  1. import requests
  2. import datetime
  3. import operator
  4. import string
  5. import threading
  6. import time
  7. import traceback
  8. import hashlib
  9. import sys

  10. login_url = 'https://www.tzbao.com/auth/loginSubmit'

  11. def do_login():
  12.     timestamp = int(time.time()*1000)

  13.     m2 = hashlib.md5()
  14.     m2.update('此处输入密码'.encode('utf-8'))
  15.     pwd = m2.hexdigest()
  16.     data = {
  17.         'loginType': 'user',
  18.         'logonUsername': '此处输入用户名',
  19.         'password': pwd,
  20.         'timeStamp': timestamp,
  21.         'rememberType': '30',
  22.         'verificationCode': '',
  23.     }
  24.     req = requests.post(login_url, data=data)
  25.     if req.url == 'https://www.tzbao.com/index':
  26.         print(req.url)

  27.     print(req.url)

  28. do_login()
复制代码


应该可以使用

最佳答案

查看完整内容

应该可以使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 09:47:48 | 显示全部楼层    本楼为最佳答案   
  1. import requests
  2. import datetime
  3. import operator
  4. import string
  5. import threading
  6. import time
  7. import traceback
  8. import hashlib
  9. import sys

  10. login_url = 'https://www.tzbao.com/auth/loginSubmit'

  11. def do_login():
  12.     timestamp = int(time.time()*1000)

  13.     m2 = hashlib.md5()
  14.     m2.update('此处输入密码'.encode('utf-8'))
  15.     pwd = m2.hexdigest()
  16.     data = {
  17.         'loginType': 'user',
  18.         'logonUsername': '此处输入用户名',
  19.         'password': pwd,
  20.         'timeStamp': timestamp,
  21.         'rememberType': '30',
  22.         'verificationCode': '',
  23.     }
  24.     req = requests.post(login_url, data=data)
  25.     if req.url == 'https://www.tzbao.com/index':
  26.         print(req.url)

  27.     print(req.url)

  28. do_login()
复制代码


应该可以使用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 10:00:35 | 显示全部楼层
占楼,沙发
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-14 11:39:24 | 显示全部楼层
用requests吧 好使
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-14 11:46:25 From FishC Mobile | 显示全部楼层
、尾指一勾 发表于 2017-9-14 11:39
用requests吧 好使

能具体点吗?谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-14 12:07:59 | 显示全部楼层
本帖最后由 zjleejun 于 2017-9-14 12:11 编辑


应该还是不行, 我更新了程序。并打印登陆后能够获取的页面。显示的页面不是登陆后能获取的页面。
import requests
import urllib
import datetime
import operator
import string
import threading
import time
import traceback
import hashlib
import sys

login_url = 'https://www.tzbao.com/auth/loginSubmit'

def do_login():
    timestamp = int(time.time()*1000)

    m2 = hashlib.md5()
    m2.update('此处输入密码'.encode('utf-8'))
    pwd = m2.hexdigest()
    data = {
        'loginType': 'user',
        'logonUsername': '此处输入用户名',
        'password': pwd,
        'timeStamp': timestamp,
        'rememberType': '30',
        'verificationCode': '',
    }
    req = requests.post(login_url, data=data)
    if req.url == 'https://www.tzbao.com/index':
        print(req.url)

    print(req.url)

def getQuotaId():

    req = urllib.request.urlopen(
        url='https://www.tzbao.com/memberAccount/queryAssetQuotaList',

    )


    print (req.read().decode('utf-8'))
do_login()
getQuotaId()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-15 18:53:22 | 显示全部楼层

谢谢啊!

python新手,我的问题是才知道cookie的功能,没有创建opener,然后创建了后没有用opener(而是用普通方式)去打开登陆后的网页,导致得不到登陆后的网页,也不知道自己登陆没有。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-9-15 18:54:14 | 显示全部楼层
# -*- coding:utf-8 -*-

import urllib.request
import urllib.parse
import http.cookiejar
import time
import hashlib


timestamp = int(time.time()*1000)
url = 'https://www.tzbao.com/auth/loginSubmit'
m2 = hashlib.md5()
m2.update('输入密码'.encode('utf-8'))
pwd = m2.hexdigest()
postdata = urllib.parse.urlencode({
    'loginType': 'user',
    'logonUsername': '输入用户名',
    'password': pwd,
    'timeStamp': timestamp,
    'rememberType': '30',
    'verificationCode': '',}).encode('utf-8')

req = urllib.request.Request(url,postdata)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.106 Safari/537.36')
cjar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cjar))
urllib.request.install_opener(opener)
file = opener.open(req)
data = file.read()
print(data)
print(file.geturl())
url2 = 'https://www.tzbao.com/memberAccount/queryAssetQuotaList'
data2 = urllib.request.urlopen(url2).read()

print(data2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 21:42

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表