zoukankan      html  css  js  c++  java
  • 模拟登陆

    环境: python scrapy

    乐8账号充值

    return [Request("http://gh.le890.com/checkcode.php", 
    meta = {'cookiejar' : response.meta['cookiejar']}, 
    callback = self.save_ver_code)
    ]
    ···
    def save_ver_code(self, response): 
    ver_code = 'code' + str(self._id)
    path = '/www/gh/crawler/ver_code/' + ver_code
    with open(path, 'wb') as f:
    f.write(response.body)
    ···
    print u'输入验证码:'
    code = raw_input()
    ···
    
    
    return [Request("http://tcoin.52tt.com/tcoin/login.shtml", 
    meta = {'cookiejar' : 1}, 
    callback = self.post_login)
    ]
    ···
    def post_login(self, response):
    # asprint 'Preparing login'
    self._csrf = response.xpath('//input[@name="_csrf"]/@value').extract()[0]
    # 提交表单
    return [FormRequest("http://tcoin.52tt.com/tcoin/login",
    meta = {'cookiejar' : response.meta['cookiejar']},
    headers = self.headers,
    formdata = {
    'username': 'username',
    'password': 'password',
    'submit': '',
    '_csrf': self._csrf
    },
    callback = self.read_account_message,
    dont_filter = True
    )] 
    
    • 保存session:(乐8平台需要将session保存到本地文件)
    # 将cookie写入文件,并保存到self.co变量
    # 在登陆完成之后做此操作
    self.cookie_jar = response.meta['cookiejar']
    self.cookie_jar.extract_cookies(response, response.request)
    
    try:
    with open("cookie.txt", 'wb+') as f:
    for cookie in self.cookie_jar:
    f.write(str(cookie) + '
    ')
    
    self.co = str(cookie).split(' ')[1]
    self.co = {self.co.split('=')[0]: self.co.split('=')[1]}
    except Exception, e:
    print e
    
    ···
    
    # 如果写入过cookie,则读取出来
    if os.path.isfile('cookie.txt'):
    with open("cookie.txt") as f:
    cookiejar = f.read()
    self.co = cookiejar.split(' ')[1]
    self.co = {self.co.split('=')[0]: self.co.split('=')[1]}
    
    • 另一种表单提交方案:
    return scrapy.FormRequest.from_response(
    response,
    meta = {'cookiejar' : response.meta['cookiejar']},
    formnumber = 1,
    formdata = self.post_data,
    dont_click = True,
    callback = self.parse_page,
    )
    
  • 相关阅读:
    Confluence 6 配置服务器基础地址示例
    (七)git分支的操作
    (六)最最基本的git操作
    (四)创建表、查看表、插入记录
    (三)数据库基本操作(创建、查询、修改、删除数据库)
    c++第九天
    (五)使用GitHub的前期准备
    (四)github之Git的初始设置
    (三)github之GIT的导入
    (二)github的价值意义篇
  • 原文地址:https://www.cnblogs.com/sanmu083/p/5532082.html
Copyright © 2011-2022 走看看