python爬虫抓站的总结
- 格式:pdf
- 大小:567.07 KB
- 文档页数:8
一、前言随着互联网的飞速发展,网络信息日益丰富,人们对于信息的需求也越来越多。
为了方便人们获取信息,网络爬虫技术应运而生。
网络爬虫是一种自动化程序,可以模拟人类在互联网上的行为,对网页进行抓取、分析和处理。
近年来,我积极参与了网络爬虫的实践,从中收获颇丰。
以下是我对网络爬虫实践的心得体会。
二、网络爬虫的基本原理网络爬虫主要分为三大类:通用爬虫、聚焦爬虫和分布式爬虫。
以下简要介绍这三种爬虫的基本原理。
1. 通用爬虫:通用爬虫以整个互联网为搜索范围,抓取所有类型的网页。
其核心算法是深度优先搜索和广度优先搜索。
通用爬虫的优点是覆盖面广,可以获取大量信息;缺点是抓取效率低,对服务器压力较大。
2. 聚焦爬虫:聚焦爬虫针对特定领域或主题进行抓取,具有更高的针对性。
其核心算法是关键词匹配和主题模型。
聚焦爬虫的优点是抓取效率高,对服务器压力小;缺点是覆盖面有限,信息量相对较少。
3. 分布式爬虫:分布式爬虫利用多台服务器协同工作,提高爬取效率。
其核心算法是任务分配和结果聚合。
分布式爬虫的优点是抓取速度快,资源利用率高;缺点是系统复杂,维护难度大。
三、网络爬虫实践心得1. 技术储备在开始网络爬虫实践之前,我们需要具备一定的技术储备。
以下是我总结的几个关键点:(1)熟悉网络协议:了解HTTP、HTTPS等网络协议的基本原理,掌握常见的请求方法,如GET、POST等。
(2)掌握HTML解析:学习HTML语法,了解常用的标签和属性,掌握常用的HTML解析库,如BeautifulSoup、lxml等。
(3)熟悉Python编程:掌握Python的基本语法,了解常用的库,如requests、re等。
(4)了解数据库:学习关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作。
2. 爬虫设计在设计爬虫时,我们需要考虑以下因素:(1)目标网站:明确爬取目标网站的主题、类型和结构,以便制定合理的抓取策略。
(2)抓取策略:根据目标网站的特点,选择合适的抓取策略,如深度优先、广度优先或关键词匹配。
爬虫项目总结(一)爬虫项目总结文稿前言爬虫项目是一项有着广泛应用的技术,它可以帮助我们从互联网上获取所需的数据,并进行进一步的分析和处理。
作为一名资深的创作者,我已经参与了许多爬虫项目,积累了丰富的经验和技巧。
在本文中,我将总结一些关键点,分享给大家。
正文在进行爬虫项目时,以下几点十分重要:1. 确定需求在开始爬虫项目之前,明确目标和需求是至关重要的。
我们需要考虑要抓取的网站、需要获取的数据类型以及数据的使用方式。
只有明确需求,才能制定出有效的爬虫策略。
2. 选择合适的爬虫框架选择合适的爬虫框架对于项目的成功至关重要。
有许多常见的爬虫框架可供选择,例如Scrapy、BeautifulSoup等。
在选择框架时,要考虑到项目的复杂性、抓取速度、对网站的兼容性等因素。
3. 编写高效的爬虫代码编写高效的爬虫代码能够提高抓取效率和稳定性。
遵循良好的代码规范和设计原则,使用合适的数据结构和算法,优化网络请求和数据处理流程等都是值得注意的点。
4. 处理反爬虫机制在抓取网页的过程中,我们经常会遇到各种反爬虫机制,如验证码、IP封禁等。
为了规避这些机制,我们需要使用一些技巧,例如使用代理IP、设置合理的请求频率、处理验证码等。
5. 数据存储与处理获取到的数据需要进行适当的存储和处理,以便后续的分析和使用。
可以选择将数据存储到数据库中,或生成CSV、JSON等格式的文件。
同时,还要注意数据的清洗和去重,确保数据的质量。
6. 定期维护和更新爬虫项目需要长期维护和更新,因为网站的结构和数据可能会发生变化。
我们需要建立良好的监控机制,及时发现问题并进行修复。
另外,也要关注网站的法律法规和反爬虫政策,确保项目的合法性和可持续性。
结尾总结而言,爬虫项目是一项充满挑战和机遇的技术。
只有根据需求选择合适的框架、编写高效的代码、处理反爬虫机制以及妥善存储和处理数据,我们才能顺利完成爬虫项目并取得良好的结果。
希望本文能对大家在进行爬虫项目时提供帮助。
爬虫实验总结心得在进行爬虫实验的过程中,我深刻体会到了爬虫技术的重要性和应用价值。
通过对网页的分析和数据的提取,可以获取大量有用的信息,为后续的数据分析和业务决策提供支持。
一、实验目的本次实验主要是为了学习爬虫技术,并掌握基本的爬虫工具和方法。
具体目标包括:1. 熟悉Python编程语言,并掌握基本语法和常用库函数。
2. 掌握网页结构分析方法,并能够使用XPath或正则表达式提取所需信息。
3. 掌握常见的爬虫工具,如BeautifulSoup、Scrapy等,并能够灵活运用。
二、实验过程1. 爬取静态网页首先,我们需要确定需要爬取的网站和目标页面。
然后,通过浏览器开发者工具查看页面源代码,分析页面结构并确定所需信息在页面中的位置。
最后,使用Python编写程序,在页面中定位所需信息并进行抓取。
2. 爬取动态网页对于动态网页,我们需要使用Selenium等工具模拟浏览器行为,在获取完整页面内容后再进行解析和数据提取。
此外,在使用Selenium 时需要注意设置浏览器窗口大小和等待时间,以保证程序能够正常运行。
3. 使用Scrapy框架进行爬虫Scrapy是一个强大的Python爬虫框架,可以大大简化爬虫的编写和管理。
在使用Scrapy时,我们需要定义好爬取规则和数据处理流程,并编写相应的Spider、Item和Pipeline等组件。
此外,Scrapy还提供了丰富的中间件和扩展功能,可以实现更多高级功能。
三、实验心得在进行本次实验过程中,我深刻体会到了爬虫技术的重要性和应用价值。
通过对网页的分析和数据的提取,可以获取大量有用的信息,为后续的数据分析和业务决策提供支持。
同时,在实验中我也遇到了一些问题和挑战。
例如,在爬取动态网页时需要模拟浏览器行为并等待页面加载完成,否则可能会出现数据不完整或无法访问页面等问题。
此外,在使用Scrapy框架时也需要注意组件之间的协作和数据流转。
总之,本次实验让我更深入地了解了爬虫技术,并掌握了基本的编程方法和工具。
爬虫实验总结一. 任务背景在互联网时代,信息的获取变得越来越便捷。
然而,对于需要大量数据的研究和应用项目来说,手动获取数据是一项枯燥且耗时的工作。
为了解决这个问题,爬虫技术应运而生。
爬虫技术可以自动抓取互联网上的信息,并快速地存储和处理大量数据。
本文就爬虫实验进行总结,探讨其原理、手段和应用。
二. 实验目的通过实际操作,掌握爬虫的基本原理和使用方法,实现对特定网站的数据抓取,并对抓取到的数据进行分析和处理。
三. 实验步骤3.1 确定爬取目标在进行爬虫实验之前,首先需要明确所要爬取的目标。
可以选择一些公开数据源,比如电商网站上的商品信息、新闻媒体上的新闻内容等。
确定目标后,进一步分析目标网站的数据结构和特点,为后续的爬虫编写工作做好准备。
3.2 选择爬虫框架或库爬虫实验需要使用相关的编程语言和框架来实现。
常见的爬虫框架有Scrapy、BeautifulSoup、Selenium等。
根据实际需求和个人喜好,选择合适的工具进行爬虫实验。
3.3 编写爬虫代码在选定了爬虫框架或库之后,开始编写爬虫代码。
根据目标网站的结构和特点,分析网页的HTML结构,确定要抓取的内容所在的标签和类名等信息。
使用编程语言中的HTTP请求库发送请求,并使用爬虫框架或库提供的解析工具解析响应内容,提取目标数据。
3.4 数据存储和处理抓取到的数据可以选择存储在数据库中,比如MySQL、MongoDB等,或者保存为文件,如CSV、JSON等格式。
根据实际需求,对抓取到的数据进行清洗和处理,确保数据的准确性和完整性。
3.5 反爬虫策略处理被爬取网站可能会采取一些反爬虫策略,如设置访问频率限制、添加验证码等。
在实际操作中,需要注意这些反爬虫策略,并做出相应的处理,避免被网站封禁。
3.6 数据分析与可视化抓取到的数据可以进行进一步的分析和处理,比如统计分析、文本挖掘等。
使用数据分析工具对数据进行探索,并使用可视化工具将分析结果直观地展示出来,有助于更好地理解数据。
爬虫实验报告总结在本次爬虫实验中,我主要使用Python的第三方库Scrapy来进行网页数据的爬取和处理。
通过这次实验,我对爬虫的原理和应用有了更深刻的理解,并且学会了如何使用Scrapy来构建一个简单的爬虫程序。
首先,我学习了爬虫的基本原理。
爬虫是一种自动化程序,能够模拟浏览器行为,访问网页并提取所需的数据。
它通过发送HTTP请求获取网页的HTML源代码,然后使用正则表达式或解析库来提取出需要的数据。
爬虫可以帮助我们高效地从互联网上获取大量的数据,并进行进一步的分析和应用。
接着,我深入学习了Scrapy框架的使用。
Scrapy是一个功能强大的Python爬虫框架,它提供了一套完整的爬取流程和多个扩展接口,方便我们开发和管理爬虫程序。
我通过安装Scrapy库,创建和配置了一个新的Scrapy项目,并定义了爬取规则和数据处理方法。
通过编写Spider类和Item类,我能够指定要爬取的网页链接和需要提取的数据字段,并使用Scrapy提供的Selector类来进行数据的抓取和解析。
在实验过程中,我遇到了一些问题和挑战。
例如,有些网页采取了反爬虫措施,如验证码、IP封禁等。
为了解决这些问题,我学习了一些常用的反爬虫手段,如使用代理IP、设置请求头等。
此外,我还学习了如何处理异步加载的数据,使用Scrapy的中间件来模拟Ajax 请求,以及如何设置爬取速度和并发数,以避免对目标网站造成过大的负担。
通过这次实验,我不仅学会了如何使用Scrapy框架进行网页数据的爬取和处理,还加深了对爬虫技术的理解。
爬虫作为一种强大的数据采集工具,在各行业都有广泛的应用,能够帮助我们获取和分析大量的网络数据,从而为决策和应用提供有力支持。
我相信在今后的学习和工作中,爬虫技术将会发挥越来越重要的作用。
一、实训背景随着互联网的飞速发展,信息资源日益丰富,如何高效地从海量信息中获取所需数据成为了一个亟待解决的问题。
网络爬虫技术作为一种自动获取网络信息的工具,在数据挖掘、信息检索、搜索引擎等领域有着广泛的应用。
为了提高自己的实际操作能力,我参加了本次爬虫实训,通过实践学习,掌握了网络爬虫的基本原理和操作方法。
二、实训目标1. 掌握网络爬虫的基本原理和操作方法;2. 学会使用Python编写爬虫程序;3. 熟悉常用的爬虫框架和库;4. 能够根据实际需求设计并实现网络爬虫。
三、实训内容1. 网络爬虫基本原理网络爬虫是按照一定的规则自动从互联网上抓取信息的程序。
它主要包括三个部分:爬虫、数据存储、数据解析。
本次实训主要学习了爬虫的工作原理、数据抓取流程、数据存储方式等。
2. Python爬虫编写实训过程中,我学习了Python语言的基础语法,掌握了常用的数据结构、控制流等编程技巧。
在此基础上,我尝试使用Python编写爬虫程序,实现了对指定网站的爬取。
3. 常用爬虫框架和库实训中,我了解了Scrapy、BeautifulSoup、Requests等常用的爬虫框架和库。
这些框架和库可以帮助我们快速搭建爬虫项目,提高爬虫效率。
4. 爬虫设计实现根据实际需求,我设计并实现了一个简单的爬虫项目。
该项目实现了对指定网站文章内容的抓取,并将抓取到的数据存储到数据库中。
四、实训成果1. 掌握了网络爬虫的基本原理和操作方法;2. 能够使用Python编写简单的爬虫程序;3. 熟悉了常用的爬虫框架和库;4. 设计并实现了一个简单的爬虫项目。
五、实训心得1. 理论与实践相结合。
本次实训让我深刻体会到,只有将理论知识与实践相结合,才能更好地掌握网络爬虫技术。
2. 不断学习新技术。
随着互联网的快速发展,网络爬虫技术也在不断更新。
作为一名爬虫开发者,我们需要不断学习新技术,提高自己的技术水平。
3. 注重代码规范。
在编写爬虫程序时,要注重代码规范,提高代码可读性和可维护性。
Python爬虫8个常用的爬虫技巧分析总结用python也差不多一年多了,python应用最多的场景还是web快速开发、爬虫、自动化运维:写过简单网站、写过自动发帖脚本、写过收发邮件脚本、写过简单验证码识别脚本。
爬虫在开发过程中也有很多复用的过程,这里总结一下,以后也能省些事情。
1、基本抓取网页get方法import urllib2url "http://baidu"respons = urllib2.urlopen(url)print response.read()post方法import urllibimport urllib2url = "http://abcde"form = {name:abc,password:1234}form_data = urllib.urlencode(form)request = urllib2.Request(url,form_data)response = urllib2.urlopen(request)print response.read()2、使用代理IP在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP;在urllib2包中有ProxyHandler类,通过此类可以设置代理访问网页,如下代码片段:import urllib2proxy = urllib2.ProxyHandler({http: 127.0.0.1:8087})opener = urllib2.build_opener(proxy)urllib2.install_opener(opener)response = urllib2.urlopen(http://baidu)print response.read()3、Cookies处理cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源.代码片段:import urllib2, cookielibcookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())opener = urllib2.build_opener(cookie_support)urllib2.install_opener(opener)content = urllib2.urlopen(http://XXXX).read()。
#### 一、实训背景随着互联网的飞速发展,数据已成为现代社会的重要资源。
网络爬虫作为数据获取的重要手段,在信息检索、数据分析、市场调研等领域发挥着越来越重要的作用。
本次爬虫实训旨在通过实际操作,加深对爬虫技术的理解,提高数据获取和处理能力。
#### 二、实训目标1. 掌握网络爬虫的基本原理和常用技术。
2. 熟悉Python编程语言,掌握常用的爬虫库和框架。
3. 能够独立设计和实现简单的爬虫程序。
4. 了解数据存储、处理和分析的基本方法。
#### 三、实训内容1. 爬虫基础知识:介绍了网络爬虫的基本概念、工作原理、常用协议和工具。
2. Python编程基础:学习了Python语言的基本语法、数据结构、控制流等。
3. 爬虫库和框架:了解了Scrapy、BeautifulSoup、Selenium等常用爬虫库和框架。
4. 数据存储:学习了MySQL、MongoDB等数据库的使用,以及CSV、JSON等文件格式。
5. 数据清洗和处理:掌握了数据清洗、转换、分析等基本方法。
6. 爬虫实战:通过实际案例,进行了多个爬虫项目的实践,包括网站数据抓取、信息提取、数据存储和分析等。
#### 四、实训过程1. 理论学习:通过阅读教材、查阅资料、观看教学视频等方式,系统地学习了爬虫相关理论知识。
2. 实践操作:在老师的指导下,完成了一系列爬虫项目,包括:- 抓取某个网站的新闻资讯,提取标题、作者、发布时间等数据。
- 抓取电商网站的商品信息,提取商品名称、价格、评价等数据。
- 抓取某个社交平台的热门话题,提取话题内容、参与人数、评论等数据。
3. 问题解决:在实训过程中,遇到了各种技术难题,如反爬策略、数据解析、异常处理等。
通过查阅资料、请教老师和同学,逐一解决了这些问题。
4. 项目总结:对每个项目进行了总结,分析了项目中的亮点和不足,为后续的改进提供了参考。
#### 五、实训成果1. 技术能力提升:通过本次实训,掌握了网络爬虫的基本原理、常用技术和实战经验,为今后从事相关领域的工作打下了坚实基础。
python爬虫知识点总结
Python爬虫是一个强大的工具,它能够自动地获取和解析网页数据。
以下
是Python爬虫的一些关键知识点:
1. 网络请求库:Python有很多库可以用来发送网络请求,如requests、urllib等。
这些库可以用于获取网页的源代码,这是爬虫获取数据的基础。
2. HTML解析:Python有很多库可以用来解析HTML,如BeautifulSoup 和lxml。
这些库可以帮助你从HTML代码中提取出你需要的数据。
3. CSS选择器和XPath:CSS选择器和XPath是用于定位HTML元素的方法。
它们可以帮助你准确地找到你需要的数据所在的HTML元素。
4. 自动化工具:Python有很多自动化工具,如Selenium和Pyppeteer,这些工具可以帮助你模拟用户在浏览器中的行为,如点击按钮、填写表单等。
5. 代理IP:在进行爬虫抓取时,可能会遇到IP被封禁的问题。
使用代理IP 可以有效地解决这个问题。
6. 反爬虫策略:网站可能会使用各种方法来防止爬虫的访问,如检测请求头、检查User-Agent、限制访问频率等。
因此,了解和应对这些策略是必要的。
7. 法律与道德问题:在进行爬虫抓取时,需要遵守法律法规和网站的使用协议,尊重网站的数据所有权。
8. 数据存储:抓取到的数据需要存储起来,Python有很多库可以用来存储
数据,如CSV、JSON、MySQL、MongoDB等。
以上就是Python爬虫的一些关键知识点,希望对你有所帮助。
寻找自我的博客p ython爬虫抓站的总结分类: Python 2012-08-22 22:41 337人阅读 评论(0) 收藏举报1.最基本的抓站import urllib2content = urllib2.urlopen('http://XXXX').read()2.使用代理服务器这在某些情况下比较有用,比如IP被封了,或者比如IP访问的次数受到限制等等。
import urllib2proxy_support = urllib2.ProxyHandler({'http':'http://XX.XX.XX.XX:XXXX'})opener = urllib2.build_opener(proxy_support, urllib2.HTTPHandler)urllib2.install_opener(opener)content = urllib2.urlopen('http://XXXX').read()3.需要登录的情况登录的情况比较麻烦我把问题拆分一下:3.1 cookie的处理import urllib2, cookielibcookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar())opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)urllib2.install_opener(opener)content = urllib2.urlopen('http://XXXX').read()是的没错,如果想同时用代理和cookie,那就加入proxy_support然后operner改为opener = urllib2.build_opener(proxy_support, cookie_support, urllib2.HTTPHandler)3.2 表单的处理登录必要填表,表单怎么填?首先利用工具截取所要填表的内容。
比如我一般用firefox+httpfox插件来看看自己到底发送了些什么包这个我就举个例子好了,以verycd为例,先找到自己发的POST请求,以及POST表单项:可以看到verycd的话需要填username,password,continueURI,fk,login_submit这几项,其中fk是随机生成的(其实不太随机,看上去像是把epoch时间经过简单的编码生成的),需要从网页获取,也就是说得先访问一次网页,用正则表达式等工具截取返回数据中的fk项。
continueURI顾名思义可以随便写,login_submit是固定的,这从源码可以看出。
还有username,password那就很显然了。
好的,有了要填写的数据,我们就要生成postdataimport urllibpostdata=urllib.urlencode({'username':'XXXXX','password':'XXXXX','continueURI':'/','fk':fk,'login_submit':'登录'})然后生成http请求,再发送请求:req = urllib2.Request(url = '/signin/*//',data = postdata)result = urllib2.urlopen(req).read()3.3 伪装成浏览器访问某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。
这时候我们需要伪装成浏览器,这可以通过修改http包中的header来实现:headers = {'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 F }req = urllib2.Request(url = '/signin/*//',data = postdata,headers = headers)3.4 反”反盗链”某些站点有所谓的反盗链设置,其实说穿了很简单,就是检查你发送请求的header里面,referer站点是不是他自己,所以我们只需要像3.3一样,把headers的referer改成该网站即可,以黑幕著称地cnbeta 为例:headers = {'Referer':'/articles'}headers是一个dict数据结构,你可以放入任何想要的header,来做一些伪装。
例如,有些自作聪明的网站总喜欢窥人隐私,别人通过代理访问,他偏偏要读取header中的X-Forwarded-For来看看人家的真实IP,没话说,那就直接把X-Forwarde-For改了吧,可以改成随便什么好玩的东东来欺负欺负他,呵呵。
3.5 终极绝招有时候即使做了3.1-3.4,访问还是会被据,那么没办法,老老实实把httpfox中看到的headers全都写上,那一般也就行了。
再不行,那就只能用终极绝招了,selenium直接控制浏览器来进行访问,只要浏览器可以做到的,那么它也可以做到。
类似的还有pamie,watir,等等等等。
4.多线程并发抓取单线程太慢的话,就需要多线程了,这里给个简单的线程池模板这个程序只是简单地打印了1-10,但是可以看出是并发地。
from threading import Threadfrom Queue import Queuefrom time import sleep#q是任务队列#NUM是并发线程总数#JOBS是有多少任务q = Queue()NUM = 2JOBS = 10#具体的处理函数,负责处理单个任务def do_somthing_using(arguments):print arguments#这个是工作进程,负责不断从队列取数据并处理def working():while True:arguments = q.get()do_somthing_using(arguments)sleep(1)q.task_done()#fork NUM个线程等待队列for i in range(NUM):t = Thread(target=working)t.setDaemon(True)t.start()#把JOBS排入队列for i in range(JOBS):q.put(i)#等待所有JOBS完成q.join()5.验证码的处理碰到验证码咋办?这里分两种情况处理:google那种验证码,凉拌简单的验证码:字符个数有限,只使用了简单的平移或旋转加噪音而没有扭曲的,这种还是有可能可以处理的,一般思路是旋转的转回来,噪音去掉,然后划分单个字符,划分好了以后再通过特征提取的方法(例如PCA)降维并生成特征库,然后把验证码和特征库进行比较。
这个比较复杂,一篇博文是说不完的,这里就不展开了,具体做法请弄本相关教科书好好研究一下。
事实上有些验证码还是很弱的,这里就不点名了,反正我通过2的方法提取过准确度非常高的验证码,所以2事实上是可行的。
6 gzip/deflate支持现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45K,为原来的1/5。
这就意味着抓取速度会快5倍。
然而python的urllib/urllib2默认都不支持压缩,要返回压缩格式,必须在request的header里面写明’accept-encoding’,然后读取response后更要检查header查看是否有’content-encoding’一项来判断是否需要解码,很繁琐琐碎。
如何让urllib2自动支持gzip, defalte呢?其实可以继承BaseHanlder类,然后build_opener的方式来处理:import urllib2from gzip import GzipFilefrom StringIO import StringIOclass ContentEncodingProcessor(urllib2.BaseHandler):"""A handler to add gzip capabilities to urllib2 requests """# add headers to requestsdef http_request(self, req):req.add_header("Accept-Encoding", "gzip, deflate")return req# decodedef http_response(self, req, resp):old_resp = resp# gzipif resp.headers.get("content-encoding") == "gzip":gz = GzipFile(fileobj=StringIO(resp.read()),mode="r")resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)resp.msg = old_resp.msg# deflateif resp.headers.get("content-encoding") == "deflate":gz = StringIO( deflate(resp.read()))resp = urllib2.addinfourl(gz, old_resp.headers, old_resp.url, old_resp.code)# 'class to resp.msg = old_resp.msgreturn resp# deflate supportimport zlibdef deflate(data): # zlib only provides the zlib compress format, not the deflate format;try: # so on top of all there's this workaround:return zlib.decompress(data, -zlib.MAX_WBITS)except zlib.error:return zlib.decompress(data)然后就简单了,encoding_support = ContentEncodingProcessoropener = urllib2.build_opener( encoding_support, urllib2.HTTPHandler)#直接用opener打开网页,如果服务器支持gzip/defalte则自动解压缩content = opener.open(url).read()7. 更方便地多线程总结一文的确提及了一个简单的多线程模板,但是那个东东真正应用到程序里面去只会让程序变得支离破碎,不堪入目。