chunked怎么解析 python

Python027

chunked怎么解析 python,第1张

很久以前写爬虫用C++和libcurl来实现,体会了libcurl的复杂和强大,后来学会了python,才发现用python+urllib/urllib2写爬虫比C++来得容易,再后来发现了python的requests库,这个更简洁简单,只要懂HTTP和HTTPS就可以写某米抢购器、火车票刷票工具、医院挂号刷号工具、驾校约车软件……,太强大了,著名的HTTP工具httpie就是基于requests实现的。

最近就用python的requests写个了爬虫,导出某汽车4s店的订单excel文件,我们都知道网页下载文件大多数是chunked编码,而requests库在解析chunked编码时就报错了:

requests.exceptions.ChunkedEncodingError: ('Connection broken: IncompleteRead(4360 bytes read)', IncompleteRead(4360 bytes read))

详细错误信息如下:

其中requests_chunked.py的第514行只是调用requests.session.post:

从Traceback信息可以看出是/usr/local/lib/python2.7/dist-packages/requests/models.py的第641行抛异常了,遇到这种情况我肯定是看看这一行代码之前都干了啥为啥抛异常,果断打开之:

这一块应该是循环接收chunk数据,异常到这里就中止了,要追查抛异常的源是哪里只能把try...except...注掉:

这回出错信息比较细了:

同样追踪/usr/local/lib/python2.7/dist-packages/requests/packages/urllib3/response.py第214行:

同样也是把这个except分支注掉,让上一层异常信息暴露出来:

这回的出错信息为:

做抢票软件的话。

首先你要知道抢票软件的原理:用程序来模拟人为操作,但是比人为操作速度更快,更精准。

第一,需要学习web前端基础知识,你要会分析售票网站的代码,里面的数据是怎么实现的,现在的网站都是静态的框架(html+css,或者html5),动态的数据(利用javascript实现)。

第二,在第一的基础之上,需要学习编程语言,利用编程语言写爬虫脚本,你可以用python语言或者其他编程语言写脚本都可以,只要能爬取售票网站的数据就行了。根据售票网站的代码格局,设计好专项的爬虫程序,不断的调试再调试,如果你想把你的爬虫脚本打包成软件,还要稍微的学习一下,打包成只是windows平台的还是Linux平台的,还是MACOS(苹果电脑系统)平台的,还是移动操作平台(手机,安卓还是苹果),不同的平台下打包也不同,做出来后还要不断的测试直到没问题,再考虑怎么将软件上线,这些等等的就不细说了,这个阶段需要耗费些精力了

第三,现在很多网站的防爬虫机制都很强,售票网站的防爬机制更强,所以你需要设计好代码,防止被防爬虫机制把你的程序防下来,这个阶段其实可以放在你学爬虫的阶段里一起学习,这个是至关重要的阶段

第四,你需要顺应时代的变化,经验而谈,售票网站都会定期更新,所以你写的爬虫脚本也要跟着改变。长久下来,如果你做的很好,那么你基本也算IT圈内人了。

不过说句实话,做抢票软件国内市场里也只在春运时期有点作用,平常时间基本没什么人用,官方直接就可以买的,而且这门槛说高不高,说低不低,抢票行里目前已经有很多比较成熟的抢票软件存在了,你要做就必须体现出与那些成熟的app很明显的不同,以及很明显的优势你才能够分一杯羹,不然也搞不出什么。不要听人搞抢票很赚钱,这一行,始终不是长久的,毕竟和黄牛党很类似,不算多么正规的。

还有,说句实在话,可能不太好听,如果哥们你只是脑子一热想搞这个的,没有绝对的毅力,我劝你别趟这浑水。

以上全是经验而谈,实话实说