Python post登陆 开发快论坛

requests库很强大,支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内容的编码,支持国际化的URL和POST数据自动编码。

可以发送无参数的get请求,也可以发送有参数的get请求,修改headers等等。

这里主要展发送post请求,通过data参数来传递。

比如:登录开发快论坛网站,通过登录名、密码来登录。

通过查看开发快论坛网站源码,可以看到登录页面的网址是:

http://bbs.kaifakuai.com/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LTyyj&inajax=1

不同的电脑登录网址可能不一样,请查看具体的网页源代码。

为了应对网站的反爬虫,可以修改headers来模拟网页登录。具体如下:

import requests
 
conn = requests.session()
url = 'http://bbs.kaifakuai.com/member.php?mod=logging&action=login&loginsubmit=yes&handlekey=login&loginhash=LTyyj&inajax=1'
postdata = 
{
    '878ebad9':'',
    'formhash':'878ebad9',
    'loginfield':'username',
    'password':'你的账号',
    'questionid':'0',
    'referer':'http://bbs.kaifakuai.com/forum.php',
     'username':'你的密码'
}
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.95 Safari/537.36'}
#上面是构造数据
rep = conn.post(url, data=postdata,headers=headers)
#提交数据 
#
#保存获取的数据
with open('1.html', 'wb') as f:
    f.write(rep.content)
#跳转到新页面
url1 = 'http://bbs.kaifakuai.com/home.php?mod=spacecp&ac=credit&showcredit=1'
rep1 = conn.get(url1, headers=headers)

with open('2.html', 'wb') as f:
    f.write(rep1.content)

 

posted @ 2018-01-26 14:57  xiaohe520  阅读(146)  评论(0编辑  收藏  举报