【问题标题】:python and function argumentpython和函数参数
【发布时间】:2012-05-30 16:23:26
【问题描述】:

我有通过发布请求进行身份验证的简单代码。 服务器每个请求都会生成“javax.faces.ViewState”变量 比如 javax.faces.ViewState=123456784356754

import requests
import re


global_headers = { 'User-Agent': 'Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0',
                   'Accept': 'application/xml, text/xml, */*; q=0.01',
                   'Referer': 'http://serrver.com/login/'}

req = requests.Session(headers=global_headers)

def javalue_parser():
        javalue = re.findall(r'name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"')
        print javalue[0]
        return javalue



my_post_req = req.post('http://server.com/login/',
                 data={'phone': '+11(123)456-78-91', 
                       'loginForm': 'loginForm',
                       'javax.faces.ViewState': "%s" % javalue_parser()
                        })

我总是出错

Traceback (most recent call last):
  File "rework_sms.py", line 28, in <module>
    'javax.faces.ViewState': "%s" % javalue_parser()
  File "test.py", line 19, in javalue_parser
    javalue = re.findall(r'name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*?)"')
TypeError: findall() takes at least 2 arguments (1 given)

需要什么论据?

【问题讨论】:

  • 什么你想用正则表达式from找到?这是另一个论点。
  • 一些数字如 12344556,但我无法在 post 请求中执行函数如果我使用 javalue_parser(my_post_req.content) 它工作正常

标签: python post get python-requests


【解决方案1】:

参考re.findall的文档

re.findall(pattern, string, flags=0)
返回模式in string的所有非重叠匹配,作为列表 字符串。 从左到右扫描字符串,并返回匹配项 按找到的顺序。如果模式中存在一个或多个组, 返回组列表;这将是一个元组列表,如果模式 有多个组。结果中包含空匹配项 除非他们触及另一场比赛的开始。

【讨论】:

    猜你喜欢
    • 2013-11-12
    • 2013-02-04
    • 2019-10-26
    • 2017-12-17
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 2014-05-13
    相关资源
    最近更新 更多