Python——urllib库的高级使用

# coding=utf-8
import urllib
import urllib2
import re
import StringIO
import gzip


# 1 提取动态的lt和execution
url = 'https://passport.csdn.net/account/login?from=http://my.csdn.net/my/mycsdn'
string = urllib2.urlopen(url).read()
pattern_lt = re.compile('name="lt" value="(.*)" />')
pattern_execution = re.compile('name="execution" value="(.*)" />')
lt = re.findall(pattern_lt, string)[0]
execution = re.findall(pattern_execution, string)[0]
print lt, execution

# 2 设置headers和post_data,然后request并得到response
post_url = 'https://passport.csdn.net/account/login?from=http%3A%2F%2Fmy.csdn.net%2Fmy%2Fmycsdn'

headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
           'Accept-Encoding': 'gzip, deflate, br',
           'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3',
           'Connection': 'keep-alive',
           'Host': 'passport.csdn.net',
           'Referer': 'https://passport.csdn.net/account/login?from=http%3A%2F%2Fmy.csdn.net%2Fmy%2Fmycsdn',
           'Content-Type': 'application/x-www-form-urlencoded'
           }
post_data = {'_eventId': 'submit',
           'execution': execution,
           'lt': lt,
           'password': 'nzdwzdnm98',
           'username': '635943647@qq.com'}
post_data = urllib.urlencode(post_data)
request = urllib2.Request(post_url, post_data, headers)
response = urllib2.urlopen(request)
data = response.read()

# 3 data解压缩
buf = StringIO.StringIO(data)
gzip_f = gzip.GzipFile(fileobj=buf)
content = gzip_f.read()
print content
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值