`
uule
  • 浏览: 6351672 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

【第三方包总结】

 
阅读更多

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:

Java代码 
  1. try:   
  2.     response = urllib2.urlopen(self.url, timeout = self.timeout)   
  3.     if response.info().get('Content-Encoding'"") == 'gzip':   
  4.         buf = StringIO.StringIO(response.read())   
  5.         f = gzip.GzipFile(fileobj=buf)   
  6.         content = f.read()   
  7.     else:   
  8.         content = response.read()   
  9.         content = self.enc_dec(content)   
  10.         return content   
  11.     except socket.timeout:   
  12.         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的安装与简单运用

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

 Python爬虫实战:爬取JS组成的页面

 

分享到:
评论

相关推荐

    excel第三方包

    总结来说,"excel第三方包"主要包含Apache POI和JXL两个主要组件,它们极大地简化了Java开发者处理Excel文件的工作,提供了丰富的功能和灵活的接口,使得在Java应用中与Excel交互变得简单易行。无论是处理老式BIFF...

    java数据库第三方包和配置java数据库第三方包和配置

    在Java开发中,数据库连接和...总结,Java数据库第三方包和配置是Java开发中的关键环节。正确选择和配置这些包能极大地提升开发效率,同时减少出错的可能性。了解并熟练掌握这些知识,对于Java开发人员来说至关重要。

    passcloud源码以及所需的第三方包.rar

    总结来说,“passcloud源码以及所需的第三方包.rar”不仅是一个运行起来的电商微服务框架,还是一个丰富的学习资源。通过对源码的深入学习和实践,开发者可以掌握微服务架构的设计与实现,以及第三方库的使用技巧,...

    包含ios开发的第三方包

    这个压缩包“包含ios开发的第三方包”显然提供了几个关键的工具,包括JSON对象的转换、百度地图SDK、网络请求类以及用于加载网络图片的组件。下面将分别对这些知识点进行详细的阐述。 首先,JSON(JavaScript ...

    Fatjar打包第三方包

    总结来说,Fatjar是Java开发者在MyEclipse和Eclipse中打包包含第三方库的便捷工具,它简化了依赖管理和部署过程。然而,随着构建工具的进步,开发者也可以考虑使用Maven或Gradle等现代工具,它们提供了更强大的功能...

    jdk引入第三方jar

    总结来说,引入第三方JAR包是Java开发中的常见步骤,可以通过多种方式实现,包括IDE集成、构建工具管理、命令行指定等。理解这些方法,结合实际项目需求,可以帮助我们更有效地利用现有资源,提高开发效率。

    go语言使用第三方包 json化结构体操作示例

    本篇文章将深入探讨如何利用第三方包`ffjson`来简化Go语言中的结构体到JSON字符串的转换过程。 首先,确保你的开发环境已经安装了Git和Go语言。`ffjson`是一个非常高效的工具,它能自动生成JSON序列化和反序列化的...

    springboot笔记【概念,核心配置,源码包,第三方包】

    【第三方包的集成】 SpringBoot 支持与众多第三方库的集成,如: 1. **MyBatis**:通过 `mybatis-spring-boot-starter` 可快速集成 MyBatis 框架。 2. **Spring Data JPA**:用于简化 JPA 开发,通过 `spring-boot...

    《机器学习实战》需要的所有第三方包

    在这个压缩包中,包含了书中所有章节所需的所有第三方Python包,旨在为读者提供一站式解决方案,避免在学习过程中花费大量时间寻找和安装依赖。 首先,我们来了解一下Python编程语言在机器学习领域的基础和核心库。...

    scrollview下拉放大效果,弹回效果动画(基于手势,不导入第三方包)

    本教程将详细讲解如何实现ScrollView的下拉放大效果以及弹回动画,全程无需引入任何第三方库,完全基于原生的手势处理。 一、ScrollView基本使用 首先,我们需要了解ScrollView的基本用法。它通常包含一个子视图,...

    第三方下拉刷新

    总结来说,第三方下拉刷新框架极大地简化了开发过程,提高了开发效率。通过选择合适的库并进行适当的配置,开发者可以快速为应用添加炫酷的下拉刷新功能,提升用户体验。在实际开发中,应根据项目需求和兼容性考虑...

    不用第三方jar的json与object(map、list)互换java类

    本文将深入探讨如何在不依赖第三方库的情况下,实现JSON与Java对象(如Map、List)之间的互换。我们将分析标题提及的两个Java类——`jsonobject.java`和`JsonUtil.java`。 首先,`JsonUtil.java`很可能是这个功能的...

    java第三方json包

    为了在Java中处理JSON,通常需要依赖第三方库,本话题将详细介绍三个常用的Java JSON处理库:Gson、Jackson以及Json-lib。 1. Gson库: Gson是Google提供的一个开源库,它能够将Java对象转换为JSON字符串,同时也...

    如何在Ant中引入第三方Jar包

    总结,引入第三方Jar包到Ant项目中主要涉及`&lt;classpath&gt;`、`&lt;pathelement&gt;`、`&lt;fileset&gt;`、`&lt;path&gt;`以及可能的远程仓库管理。正确配置这些元素,确保JVM在编译和运行时能找到所需的所有依赖,从而保证项目的顺利执行...

    HTTP协议编程 VC++6.0

    HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本到本地浏览器的传输协议。它是一个基于请求与响应模式的...使用第三方库可以简化这些过程,而异步编程则能提升应用的性能。

    Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法

    虚拟环境允许你在隔离的环境中安装Python包,避免不同项目之间的依赖冲突,而pipreqs则可以帮助你方便地生成项目所需的第三方包列表。 **virtualenv简介** virtualenv是一个Python库,用于创建独立的Python运行...

    PyCharm中关于安装第三方包的三个建议

    大家在使用PyCharm的过程中,肯定会遇到各种各样的问题,其中一个问题就是很多第三方的包安装不了。在使用过程中,我对这种情况进行了总结,现在将各种方法跟大家讲一下。 第一: 大家可以在PyCharm的平台上进行...

    python自动重试第三方包retrying模块的方法

    总结起来,`retrying`模块是Python中实现自动重试功能的理想选择,它简化了处理可能失败操作的代码,并提供了丰富的配置选项以适应各种场景。无论是在网络爬虫中处理不可靠的网络连接,还是在其他需要高稳定性的服务...

    go常见错误总结1

    在使用Go语言时,可能会遇到无法获取第三方包的情况。这种情况可能是由于网络连接问题或其他原因引起的。 解决方法:使用git命令来获取第三方包,例如: ```bash git clone https://github.com/golang/sys.git ```...

Global site tag (gtag.js) - Google Analytics