python - 为什么通过urllib获取Response数据与在浏览器开发工具中看到的不一致?

查看:260
本文介绍了python - 为什么通过urllib获取Response数据与在浏览器开发工具中看到的不一致?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

python模拟浏览器发送请求,自动获取信息,但是使用urllib模块获取的信息与在浏览器开发工具中的不一致

访问信息:



具体代码:

from urllib import request, parse

req = request.Request(
    'http://bpm.tinno.com/project/list_Materials.action?userId=613689,614904,613697')
req.add_header(
    'Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8')
req.add_header(
    'Cookie', 'bpm_ident=-wM0Y383RviJI04BfBiznQ; JSESSIONID=09BE59A85DD61AAA981011B302824320; LoginFlag=618190')
req.add_header('Referer', 'http://bpm.tinno.com/')
req.add_header(
    'User-Agent', 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML:like Gecko) Chrome/50.0.2661.102 Safari/537.36')
req.add_header('X-Requested-With', 'XMLHttpRequest')
data = parse.urlencode(
    {'start': '',
     'limit': 5,
     'NewMaterialNo': 'G08-MT6515-001',
     'MaterialAtt': '',
     'MaterialAtt2': '',
     'MaterialType1': '',
     'MaterialType': '',
     'OPType': '',
     'suppliernamedid': '',
     'suppliername': '',
     'StandardText': '',
     'MaterialDescribe': '',
     'functionDes': ''})
data = data.encode('ascii')

with request.urlopen(req, data) as f:
    print('Status:', f.status, f.reason)
    for k, v in f.getheaders():
        print('%s: %s' % (k, v))
    print(f.read().decode('utf-8'))

代码运行结果:

Status: 200 OK
Server: Apache-Coyote/1.1
Content-Type: application/json;charset=UTF-8
Content-Length: 16
Date: Sat, 24 Dec 2016 07:19:43 GMT
Connection: close
{"success":true}
[Finished in 0.2s]

但是在浏览器开发工具中:

代码运行结果只有数据:{"success":true},后面的一大串数据为什么没有呢?

解决方案

start: 0 和 start: ''

这篇关于python - 为什么通过urllib获取Response数据与在浏览器开发工具中看到的不一致?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆