1、python有个第三方包叫chardet,它可以自动帮你识别出网页的编码
import chardet
import urllib2
#可根据需要,选择不同的数据
TestData = urllib2.urlopen('http://www.baidu.com/').read()
print chardet.detect(TestData)
准确的判断编码方式是utf-8.
我测试后,返回的编码却为这种None:
{'encoding': None, 'confidence': 0.0}
原来是这个页面的编码问题,该页面返回的是gzip编码,实际上每次应该判断页面信息的'Content-Encoding'是否为'gzip'。
urllib支持gzip页面自动解压而urllib2不支持。 所以对于这种页面, 先解压再read:
- try:
- response = urllib2.urlopen(self.url, timeout = self.timeout)
- if response.info().get('Content-Encoding', "") == 'gzip':
- buf = StringIO.StringIO(response.read())
- f = gzip.GzipFile(fileobj=buf)
- content = f.read()
- else:
- content = response.read()
- content = self.enc_dec(content)
- return content
- except socket.timeout:
- log.warn("Timeout in fetching %s" % self.url)
自己的解决方法是在请求时,将header中的
'Accept-Encoding':'gzip, deflate, sdch', 注释掉即可获取到正常的bytes数据
然后自己再次识别编码,结果为:{'encoding': 'utf-8', 'confidence': 0.99}
最后再bytes转换为 str,即可获得完整可识别的HTML代码。
2、import requests
requests是python的一个HTTP客户端库,跟urllib,urllib2类似,那为什么要用requests而不用urllib2呢?官方文档中是这样说明的:
python的标准库urllib2提供了大部分需要的HTTP功能,但是API太逆天了,一个简单的功能就需要一大堆代码。
下载了安装包(网页中download the tarball处链接),然后$ python setup.py install就装好了。
当然,有easy_install或pip的朋友可以直接使用:easy_install requests或者pip install requests来安装。
至于linux用户,这个页面还有其他安装方法。
测试:在IDLE中输入import requests,如果没提示错误,那说明已经安装成功了!
python requests的安装与简单运用
>>>import requests >>> r = requests.get('http://www.zhidaow.com') # 发送请求 >>> r.status_code # 返回码 200 >>> r.headers['content-type'] # 返回头部信息 'text/html; charset=utf8' >>> r.encoding # 编码信息 'utf-8' >>> r.text #内容部分(PS,由于编码问题,建议这里使用r.content) u'<!DOCTYPE html>\n<html xmlns="http://www.w3.org/1999/xhtml"...'
3、爬取JS页面用的selenium
pip install selenium
相关推荐
总结来说,"excel第三方包"主要包含Apache POI和JXL两个主要组件,它们极大地简化了Java开发者处理Excel文件的工作,提供了丰富的功能和灵活的接口,使得在Java应用中与Excel交互变得简单易行。无论是处理老式BIFF...
在Java开发中,数据库连接和...总结,Java数据库第三方包和配置是Java开发中的关键环节。正确选择和配置这些包能极大地提升开发效率,同时减少出错的可能性。了解并熟练掌握这些知识,对于Java开发人员来说至关重要。
总结来说,“passcloud源码以及所需的第三方包.rar”不仅是一个运行起来的电商微服务框架,还是一个丰富的学习资源。通过对源码的深入学习和实践,开发者可以掌握微服务架构的设计与实现,以及第三方库的使用技巧,...
这个压缩包“包含ios开发的第三方包”显然提供了几个关键的工具,包括JSON对象的转换、百度地图SDK、网络请求类以及用于加载网络图片的组件。下面将分别对这些知识点进行详细的阐述。 首先,JSON(JavaScript ...
总结来说,Fatjar是Java开发者在MyEclipse和Eclipse中打包包含第三方库的便捷工具,它简化了依赖管理和部署过程。然而,随着构建工具的进步,开发者也可以考虑使用Maven或Gradle等现代工具,它们提供了更强大的功能...
本篇文章将深入探讨如何利用第三方包`ffjson`来简化Go语言中的结构体到JSON字符串的转换过程。 首先,确保你的开发环境已经安装了Git和Go语言。`ffjson`是一个非常高效的工具,它能自动生成JSON序列化和反序列化的...
【第三方包的集成】 SpringBoot 支持与众多第三方库的集成,如: 1. **MyBatis**:通过 `mybatis-spring-boot-starter` 可快速集成 MyBatis 框架。 2. **Spring Data JPA**:用于简化 JPA 开发,通过 `spring-boot...
在这个压缩包中,包含了书中所有章节所需的所有第三方Python包,旨在为读者提供一站式解决方案,避免在学习过程中花费大量时间寻找和安装依赖。 首先,我们来了解一下Python编程语言在机器学习领域的基础和核心库。...
总结来说,引入第三方JAR包是Java开发中的常见步骤,可以通过多种方式实现,包括IDE集成、构建工具管理、命令行指定等。理解这些方法,结合实际项目需求,可以帮助我们更有效地利用现有资源,提高开发效率。
本教程将详细讲解如何实现ScrollView的下拉放大效果以及弹回动画,全程无需引入任何第三方库,完全基于原生的手势处理。 一、ScrollView基本使用 首先,我们需要了解ScrollView的基本用法。它通常包含一个子视图,...
总结来说,第三方下拉刷新框架极大地简化了开发过程,提高了开发效率。通过选择合适的库并进行适当的配置,开发者可以快速为应用添加炫酷的下拉刷新功能,提升用户体验。在实际开发中,应根据项目需求和兼容性考虑...
本文将深入探讨如何在不依赖第三方库的情况下,实现JSON与Java对象(如Map、List)之间的互换。我们将分析标题提及的两个Java类——`jsonobject.java`和`JsonUtil.java`。 首先,`JsonUtil.java`很可能是这个功能的...
为了在Java中处理JSON,通常需要依赖第三方库,本话题将详细介绍三个常用的Java JSON处理库:Gson、Jackson以及Json-lib。 1. Gson库: Gson是Google提供的一个开源库,它能够将Java对象转换为JSON字符串,同时也...
总结,引入第三方Jar包到Ant项目中主要涉及`<classpath>`、`<pathelement>`、`<fileset>`、`<path>`以及可能的远程仓库管理。正确配置这些元素,确保JVM在编译和运行时能找到所需的所有依赖,从而保证项目的顺利执行...
HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。它是一个基于请求与响应模式的...使用第三方库可以简化这些过程,而异步编程则能提升应用的性能。
虚拟环境允许你在隔离的环境中安装Python包,避免不同项目之间的依赖冲突,而pipreqs则可以帮助你方便地生成项目所需的第三方包列表。 **virtualenv简介** virtualenv是一个Python库,用于创建独立的Python运行...
- 在请求体中传递必要的参数,如`appId`(第三方应用ID)、`appSecuret`(第三方应用密码)、`tenantid`(租户ID)、`accountId`(数据中心ID)等。 - 服务器返回的应用令牌将用于后续获取AccessToken。 - **...
大家在使用PyCharm的过程中,肯定会遇到各种各样的问题,其中一个问题就是很多第三方的包安装不了。在使用过程中,我对这种情况进行了总结,现在将各种方法跟大家讲一下。 第一: 大家可以在PyCharm的平台上进行...
总结起来,`retrying`模块是Python中实现自动重试功能的理想选择,它简化了处理可能失败操作的代码,并提供了丰富的配置选项以适应各种场景。无论是在网络爬虫中处理不可靠的网络连接,还是在其他需要高稳定性的服务...