我正在尝试使用Python Requests库下载csv文件 . 我正在使用Requests库,因为我首先必须通过免责声明页面,所以我使用Session对象存储所有cookie和所有爵士乐 . 我的POST请求一直返回,响应内容只是csv文件的前6行 . 当我使用浏览器下载文件时,它长1622行 . 我目前的剧本:

import logging

logging.basicConfig(level=logging.DEBUG)

import pdb

import requests

s = requests.Session()

## Disclaimer page session

dis_url = 'http://a100.gov.bc.ca/pub/gwl/disclaimer.do'

accept_form = {'submitType':'Accept'}

s.post(dis_url, data=accept_form)

## POST request

base_url = 'http://a100.gov.bc.ca/pub/gwl/plot.do'

postContent = {

'fromYear':'2012',

'fromMonth':'1',

'fromDay':'1',

'toYear':'2013',

'toMonth':'1',

'toDay':'1',

'emsIDs':'E290172' ,

'mode':'GRAPH',

'mmaFlags':'false',

'submitType':'Download'}

httpHeaders = {

'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',

'Host': 'a100.gov.bc.ca',

'Connection': 'keep-alive',

'Content-Length': '155',

'User-Agent': 'python-requests/1.2.3 CPython/2.7.3 Linux/3.5.0-23-generic',

'Content-Type': 'application/x-www-form-urlencoded',

'Referer': 'http://www.env.gov.bc.ca/wsd/data_searches/obswell/map/obsWells.html',

'Accept-Encoding': 'gzip,deflate,sdch',

'Accept-Language': 'en-US,en;q=0.8'}

r = s.post(base_url, data=postContent, headers=httpHeaders, stream=False, timeout=3600)

print r.content

我还应该提一下,我也尝试通过chunking返回csv,如下所示:

with open("report.csv",'wb') as file:

r = s.post(base_url,stream=True,timeout=3600, data=postContent, headers=httpHeaders)

for chunk in r.iter_content(chunk_size=1024):

if chunk:

file.write(chunk)

file.flush()

但我仍然只获得report.csv中的前6行 .

我认为我的内容没有完全加载,因为我在请求 Headers 中遗漏了一些内容 . 这是(工作)浏览器请求标头:

POST /pub/gwl/plot.do HTTP/1.1

Host: a100.gov.bc.ca

Connection: keep-alive

Content-Length: 155

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

Origin: http://www.env.gov.bc.ca

User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36

Content-Type: application/x-www-form-urlencoded

Referer: http://www.env.gov.bc.ca/wsd/data_searches/obswell/map/obsWells.html

Accept-Encoding: gzip,deflate,sdch

Accept-Language: en-US,en;q=0.

Cookie: JSESSIONID=73de9312c8dcf1c4c657d19adbe811b88792479fe72eb2e2feeedea7d88bdbf8.e3uMah8KbhmLe3mMbN8Pa3uPbi1ynknvrkLOlQzNp65In0; WT_FPC=id=2fcd604924a9af3c13e1374599088181:lv=1383612362138:ss=1383612301792

工作浏览器响应头:

HTTP/1.1 200 OK

Date: Mon, 04 Nov 2013 20:59:52 GMT

Server: Oracle-Application-Server-10g/10.1.2.2.0 Oracle-HTTP-Server

Content-Disposition: attachment; filename="gwl_report.csv"

Cache-Control: must-revalidate

Content-Type: application/download

Set-Cookie: JSESSIONID=61d874e1b5ce07df96aaabe504d7c18788e5aaf773a7bee7ab4b0cf349a88aaa.e3uMah8KbhmLe3mMbN8Pa3uPbi1ynknvrkLOlQzNp65In0; path=/pub/gwl

Transfer-Encoding: chunked

来自python post请求的请求标头(我的响应缺少Transfer-Encoding:chunked):

Content-Length : 126

Accept-Language : en-US,en;q=0.8

Accept-Encoding : gzip,deflate,sdch

Connection : keep-alive

Accept : text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

User-Agent : python-requests/1.2.3 CPython/2.7.3 Linux/3.5.0-23-generic

Host : a100.gov.bc.ca

Referer : http://www.env.gov.bc.ca/wsd/data_searches/obswell/map/obsWells.html

Cookie : JSESSIONID=9a51e637cccc6164e4784631ef9a0ab21574c518c1c5c86cf0892bbf2aa22c95.e3uMah8KbhmLe3mMbN8Pa3uPbi1ynknvrkLOlQzNp65In0

Content-Type : application/x-www-form-urlencoded

Python响应头(我失去了Transfer-Encoding:chunked):

content-length : 200

content-disposition : attachment; filename="gwl_report.csv"

set-cookie : JSESSIONID=9a51e637cccc6164e4784631ef9a0ab21574c518c1c5c86cf0892bbf2aa22c95.e3uMah8KbhmLe3mMbN8Pa3uPbi1ynknvrkLOlQzNp65In0; path=/pub/gwl

server : Oracle-Application-Server-10g/10.1.2.2.0 Oracle-HTTP-Server

cache-control : must-revalidate

date : Tue, 05 Nov 2013 00:51:47 GMT

content-type : application/download

有谁知道如何发出一个返回整个csv文件的POST请求?

python请求post无返回结果_Python请求POST返回不完整的内容相关推荐

  1. python os.system返回值_python os.system()返回值判断

    最近遇到os.system()执行系统命令的情况,上网搜集了一下资料,整理如下,以备不时之需,同时也希望能帮到某些人. 一.python中的 os.system(cmd)的返回值与linux命令返回值 ...

  2. python怎么调用函数的返回值_python函数的返回值是什么

    返回值简介 函数需要先定义后调用,函数体中 return 语句的结果就是返回值.如果一个函数没有 reutrn 语句,其实它有一个隐含的 return 语句,返回值是 None,类型也是 'NoneT ...

  3. 获取python脚本的返回值_Python多线程获取返回值代码实例

    这篇文章主要介绍了Python多线程获取返回值代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在使用多线程的时候难免想要获取其操作完的返回值 ...

  4. python爬app无水印视频_Python爬虫:短视频平台无水印下载 (上)

    导入: 虽然目前有些软件还没适配,但是,我发了 Blink 后有一写人留言或者私信找我要源码,不过我还在增加适配的软件,所以还没有时间写这篇博客,今天呢,就先把我目前适配了的代码拿出来,后续还会继续适 ...

  5. if python 判断函数返回值_Python函数的返回值和作用域

    函数的返回值和作用域 1.返回值 def guess(x): if x > 3: return "> 3" else: return "<= 3&quo ...

  6. python字典items返回什么_Python 字典items返回列表,iteritems返回迭代器

    说明:items以列表方式返回字典中的键值对,iteritems以迭代器对象 返回键值对儿(Python3中不再支持): 字典items()方法和iteritems()方法,是python字典的内建函 ...

  7. python writerow 返回值_python – .writerow()csv返回一个数字而不是写行

    我正在使用Python 3测试一些非常简单的代码.出于某种原因,下面的代码生成一个空输出,而不是写一行 import csv output = open('hello world.csv', 'w', ...

  8. python的匿名函数返回值_Python匿名函数返回值输出问题望指点

    该段的匿名函数作为返回值返回,那请问可以输出对应的值吗?小白途中!望各位指点! def build(x, y): return lambda: x * x + y * y 1.匿名函数在一定意义上应该 ...

  9. [转载] python解析返回结果_python:解析requests返回的response(json格式)说明

    参考链接: python-json 8: 解析requrst的响应 我就废话不多说了,大家还是直接看代码吧!jte免费资源网 import requests, json r = requests.ge ...

最新文章

  1. Django使用数据库(Mariadb/Mysql)
  2. 使用Apriori算法进行关联分析
  3. LDR 、ADR介绍
  4. linux查看删除init内容,linux常用命令
  5. 学习笔记(2)centos7 下安装mysql
  6. 客户关系管理之会员管理(转)
  7. Linux开发环境——SSH工具
  8. 上海大华条码称代码_上海大华条码秤使用说明书样本
  9. python编写udp端口扫描工具全
  10. 我们试用了市面上几款微信自动化软件,哪家弱哪家强?
  11. web_dynpro_ALV:(包ZLYTEST2)(alv 的事件只需注意一个R_PARAM就哦了)
  12. template-模板完全特化
  13. 安卓开发良好的习惯(想到就更新)
  14. 【Python】绘制GPX轨迹图并定位特定时间点
  15. iqooneo3支持鸿蒙系统吗,iQOO Neo3搭载144Hz竞速屏:支持全局自适应刷新率
  16. 《数据结构与算法》课程设计:18-背包问题
  17. 解决谷歌浏览器无法输入中文的问题
  18. Anaconda的卸载及安装(图文详解)
  19. iphone文稿和数据怎么迁移到iCloud云端
  20. 浅析嵌入式系统之uboot详解(5.3)—PWM定时器(番外)

热门文章

  1. 表决器c语言课程设计,项目二:玩转RGB点阵屏——表情表决器
  2. C++ FAQs 第二版
  3. CentOS 阿里云硬盘扩容
  4. REACT map dictionary
  5. HDU4549 M斐波那契数列 —— 斐波那契、费马小定理、矩阵快速幂
  6. Eclipse的JQuery提示插件-Spket(别试了,没什么效果,且安装设置麻烦)
  7. appium(3)-Running Tests
  8. java.util.List学习笔记
  9. hdu 5396 Expression
  10. Android实现点击事件的4种方式