• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
作死-no1
博客园    首页    新随笔    联系   管理    订阅  订阅

爬虫----表单登录

1.post提交表单

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

import urllib, urllib2
import cookielib
import lxml.html

from lxml import etree

def getcookie():
cj = cookielib.CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
return opener

def get_data(html):
tree = lxml.html.fromstring(html)
data = {}
for i in tree.cssselect('form input'):
if i.get('name'):
data[i.get('name')] = i.get('value')
return data

def main():
url = 'https://www.douban.com/accounts/login?source=main'
html = urllib2.urlopen(url).read()
data = get_data(html)
data['login'] = 'login'
data['form_email'] = '1111111111@qq.com'
data['form_password'] = 'admin'
encode_data = urllib.urlencode(data)
request = urllib2.Request(url, encode_data)
opener = getcookie()
response = opener.open(request)

print response.geturl()



if __name__ == "__main__":
main()

2.高级模块mechanize

# -*- coding:utf-8 -*-
import mechanize
import sys
reload(sys)
sys.setdefaultencoding('utf-8')


def main():
url = 'https://www.douban.com/accounts/login?source=main'
br = mechanize.Browser()
br.open(url)
# for form in br.forms():
# print form
br.select_form(nr=0)
br['form_email'] = '1111111111@qq.com'
br['form_password'] = 'admin'
response = br.submit()
print response.geturl()


if __name__ == '__main__':
main()

 

posted @ 2018-10-04 17:11  作死-no1  阅读(562)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3