re.match匹配多行数据失败

来源:互联网 发布:数据库原理 编辑:程序博客网 时间:2024/05/18 22:41

出错代码与现象:
正则表达式提取网站源码中的_xsrf的值
使用单行数据测试正则表达式,能够正确提取,但是换成网页全文数据的时候,出现错误。

import requeststry:    import cookielibexcept:    import http.cookiejar as cookielibimport resession = requests.session()header = {    "HOST": "www.zhihu.com",    "Referer": "https://www.zhihu.com/",    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:56.0) Gecko/20100101 Firefox/56.0"}def get_xsrf():    r = session.get("https://www.zhihu.com", headers=header)    # print(r.text)    text1 = '<input type="hidden" name="_xsrf" value="5986f7d0c7314107a47024ef01fedcc8"/>'    text = 'xxx\n<input type="hidden" name="_xsrf" value="5986f7d0c7314107a47024ef01fedcc8"/>'    match_obj = re.match('.*name="_xsrf" value="(.*?)"', text, re.DOTALL)    if match_obj:        print(match_obj.group(1))    else:        print("None")get_xsrf()

错误原因以及解决方案
re.match默认是只匹配一行数据,如果需要对全文进行匹配的话,需要手动设置相应的flag位。
re.match(pattern, string, flags=re.DOTALL) #匹配全文

原创粉丝点击