pythonurllib的使用_python re和urllib的使用问题。

模拟登陆豆瓣的程序。

#-*- coding:utf-8-*-

import urllib

import urllib2

import re

import cookielib

import sys

reload (sys)

sys.setdefaultencoding("utf-8")

username = ''

password = ''

cookie = cookielib.CookieJar()

handler = urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(handler)

url = 'http://www.douban.com/'

req = urllib2.Request(url)

res = urllib2.urlopen(req)

loginurl = 'https://accounts.douban.com/login'

headers = {"User-Agent":'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.157 Safari/537.36'}

data = {

"ck":'93rI',

"source":'None',

"redir":'http://www.douban.com',

"form_email":'username',

"form_password":'password',

"remember":'on'

"login":'登陆'

}

dt = urllib.urlencode(data)

request = urllib2.Request(loginurl,dt,headers)

response = opener.open(request)

page = response.read()

print page

data里面那个中文 “登陆” 我怎么表示。这个程序运行之后显示的是 登陆那个地方无效的语法。

2.在正则中如果我要匹配中文要怎么匹配,把中文转换成utf-8码?中文和这个怎么转换。

3.chrome 开发者工具的问题,我登陆豆瓣的时候能够看到

URL和post表单,但是登陆直呼的时候却找不到,准确来说我就是没在name里找到login这个所以自然找不到post表单。我用火狐可以找到。

再来一个吧,这个是登陆知乎的程序。都大同小异,别人给我改过一次。我自己写的结果是验证码写不要出来。改完之后i是这样的:

# -*- coding: utf-8 -*-

import sys

reload(sys)

sys.setdefaultencoding( "utf-8" )

import urllib

import urllib2

import cookielib

import re

#设置账号(Email类型)

username = ''

password = ''

#Cookie

cookie = cookielib.CookieJar()

cookie_handler = urllib2.HTTPCookieProcessor(cookie)

opener = urllib2.build_opener(cookie_handler)

urllib2.install_opener(opener)

#请求首页

url = 'http://www.zhihu.com/'

request = urllib2.Request(url)

res = urllib2.urlopen(request)

contents = res.read().decode('utf-8')

#得到 token

pattern = re.compile(r'',re.S)

result = re.findall(pattern,contents)

xsrf = result[0]

#请求验证码

Captcha_URL= 'http://www.zhihu.com/captcha.gif?r=11111111'

r = urllib2.urlopen(urllib2.Request(Captcha_URL))

#写入文件

with open('code.gif','wb') as f:

f.write(r.read())

#输入 4位的 验证码

captcha =raw_input('captcha: ')

#构造登陆时的数据

lgurl = 'http://www.zhihu.com/login/email'

hdr = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; rv:43.0) Gecko/20100101 Firefox/43.0'}

post_data = {

'_xsrf':xsrf,

'email':username,

'password':password,

'rememberme':'true',

'captcha':captcha

}

#提交登陆

dt = urllib.urlencode(post_data)

req = urllib2.Request(lgurl, dt, hdr)

response = opener.open(req)

page = response.read()

print page

这个代码,有两个不明白的地方一个是获取验证之后那三行

r = urllib2.urlopen(urllib2.Request(Captcha_URL))

写入文件

with open('code.gif','wb') as f:

f.write(r.read())

为什么要打开这个r 还有为什么要写入文件。

其次是,运行之后要输入验证码,我就点开验证码的url每次输入之后显示的结果还是验证码错误。

请大家赐教。感激不尽。把这几个程序弄完之后就开始学习requests和beautiful soup了。还有那些常用的库要学习还请大家跟我说一下。如果大家有好的资源能分享一下就更好了。真的非常谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值