模拟登陆豆瓣的程序。
#-*- 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了。还有那些常用的库要学习还请大家跟我说一下。如果大家有好的资源能分享一下就更好了。真的非常谢谢!