需求

最近在做一个功能,使用python爬取网页然后保存到本地。其中遇到的一个难题是判断页面的编码方式。有问题就百度喽,当时我没想到自己去解决。一百度就找到了一个叫chardet的插件。大喜过望,试了一下很OK。好了,貌似问题解决了,可是

为毛我的请求变慢了很多,起初我还以为是python慢,后来一查才知道,chardet这个东西会严重影响速度,即使一个简单的页面,这家伙都要用掉我将近15s的时间去判断页面编码,擦,等的我心痒痒。百度charset效率低的问题,结果没找到。

难道是我用的方法不对。

人生啊总是充满了怀疑

我反复的看chardet的资料,之前查的是官网,找不到网址了。这个网址也凑合http://blog.csdn.net/tianzhu123/article/details/8187470

百度,反复试了chardet推荐的方法,结果快是快了一点,由原来的18s变为了12s。看到这个数字我满脸狗血。最近踩了太多坑了,phantom差点把我坑死,berserkJs把我坑个半死。我已经预料到了我已经掉进了chardet的坑里。

上岸

俗话说,自己动手丰衣足食,我仰望星空思考了5分钟然后写出来以下代码。虽然不全面,但是已经能够解决了我现在遇到的问题。

def checkChar(content):
start = content.find("charset")
end = start+len("charset=")+30;
stripStr=content[start:end]
charset="utf-8"
if(stripStr.lower().find("gb2312")>-1 or stripStr.lower().find("gbk")>-1) :
charset="gbk"
return charset

总结:开源的东西真是良莠不齐,一不小心我们就会掉坑里,浪费时间浪费生命。所以能自己解决的尽量不要百度。还有以后分享代码,也一定要负责一点,不要再给别人弯路走。

最新文章

  1. php函数强大的 strtotime
  2. PHP 笔记一(systax/variables/echo/print/Data Type)
  3. Linux下apache+phppgadmin+postgresql安装配置
  4. smarty模板原理和增删改查例题
  5. Java基础-四要素之一《封装》
  6. [转]BEHAVOUR TREE2
  7. hdu 4578 Transformation 线段树
  8. C#开源资源大汇总
  9. 【42】了解typename的双重意义
  10. Pagekit安装
  11. 使用django+celery+RabbitMQ实现异步执行
  12. Custom draw 和 Owner draw 的区别
  13. OCR文字识别帮助录入文字信息
  14. Linux基础学习:文件与目录管理
  15. 67 个JavaScript和CSS实用工具、库与资源
  16. frp使用笔记
  17. BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】
  18. oracle的存储过程
  19. P2147 [SDOI2008]洞穴勘测(LCT)
  20. Flex Cairngorm框架知识整理

热门文章

  1. 什么是IO流 \ 以及文件输入输出
  2. WCF通过SVCUtil.exe生成客户端代理类和配置文件(转)
  3. win2008 IIS与tomcat整合
  4. 1.1使用内置的Camara应用程序捕捉图像
  5. workflow GetListIdByName 获取表名
  6. 121. Best Time to Buy and Sell Stock (一) leetcode解题笔记
  7. Hibernate配置与事务管理
  8. C#实现:给定[0-9]数组,求用数组组成的任意数字的最小值
  9. mysql galera cluster 集群的分裂与仲裁机制
  10. win7环境下安装运行gotour【转载整理】