Python爬虫高手必备的8大技巧!

article/2025/6/17 11:10:05

👇我的小册 40章+教程:(小白零基础用Python量化股票分析小册) ,目前已经360多人订阅

转自:网络

转自:网络

想要快速学习爬虫,最值得学习的语言一定是Python,Python应用场景比较多,比如:Web快速开发、爬虫、自动化运维等等,可以做简单网站、自动发帖脚本、收发邮件脚本、简单验证码识别脚本。

爬虫在开发过程中也有很多复用的过程,今天就总结一下必备的8大技巧,以后也能省时省力,高效完成任务。

1 基本抓取网页

get方法

import urllib2

url = "http://www.baidu.com"

response = urllib2.urlopen(url)

print response.read

post方法

import urllib

import urllib2

url = "http://abcde.com"

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 urllib2

proxy = urllib2.ProxyHandler({'http': '127.0.0.1:8087'})

opener = urllib2.build_opener(proxy)

urllib2.install_opener(opener)

response = urllib2.urlopen('http://www.baidu.com')

print response.read

3 Cookies处理

cookies是某些网站为了辨别用户身份、进行session跟踪而储存在用户本地终端上的数据(通常经过加密),python提供了cookielib模块用于处理cookies,cookielib模块的主要作用是提供可存储cookie的对象,以便于与urllib2模块配合使用来访问Internet资源。

代码片段:

import urllib2, cookielib

cookie_support= urllib2.HTTPCookieProcessor(cookielib.CookieJar)

opener = urllib2.build_opener(cookie_support)

urllib2.install_opener(opener)

content = urllib2.urlopen('http://XXXX').read

关键在于CookieJar,它用于管理HTTP cookie值、存储HTTP请求生成的cookie、向传出的HTTP请求添加cookie的对象。整个cookie都存储在内存中,对CookieJar实例进行垃圾回收后cookie也将丢失,所有过程都不需要单独去操作。

手动添加cookie:

cookie = "PHPSESSID=91rurfqm2329bopnosfu4fvmu7; kmsign=55d2c12c9b1e3; KMUID=b6Ejc1XSwPq9o756AxnBAg="

request.add_header("Cookie", cookie)

4 伪装成浏览器

某些网站反感爬虫的到访,于是对爬虫一律拒绝请求。所以用urllib2直接访问网站经常会出现HTTP Error 403: Forbidden的情况。

对有些 header 要特别留意,Server 端会针对这些 header 做检查:

  • User-Agent 有些 Server 或 Proxy 会检查该值,用来判断是否是浏览器发起的 Request

  • Content-Type 在使用 REST 接口时,Server 会检查该值,用来确定 HTTP Body 中的内容该怎样解析

User-Agent 有些 Server 或 Proxy 会检查该值,用来判断是否是浏览器发起的 Request

Content-Type 在使用 REST 接口时,Server 会检查该值,用来确定 HTTP Body 中的内容该怎样解析

这时可以通过修改http包中的header来实现,代码片段如下:

import urllib2

headers = {

'User-Agent':'Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6'

}

request = urllib2.Request(

url = 'http://my.oschina.net/jhao104/blog?catalog=3463517',

headers = headers

)

print urllib2.urlopen(request).read

5 页面解析

对于页面解析最强大的当然是正则表达式,这个对于不同网站不同的使用者都不一样,就不用过多的说明其次就是解析库了,常用的有两个lxml和BeautifulSoup对于这两个库,我的评价是,都是HTML/XML的处理库,Beautifulsoup纯python实现,效率低,但是功能实用,比如能用通过结果搜索获得某个HTML节点的源码;lxml C语言编码,高效,支持Xpath。

6 验证码的处理

对于一些简单的验证码,可以进行简单的识别。本人也只进行过一些简单的验证码识别。但是有些反人类的验证码,比如12306,可以通过打码平台进行人工打码,当然这是要付费的。

7 gzip压缩

有没有遇到过某些网页,不论怎么转码都是一团乱码。哈哈,那说明你还不知道许多web服务具有发送压缩数据的能力,这可以将网络线路上传输的大量数据消减 60%****以上。这尤其适用于XML web 服务,因为 XML 数据 的压缩率可以很高。

但是一般服务器不会为你发送压缩数据,除非你告诉服务器你可以处理压缩数据。

于是需要这样修改代码:

import urllib2, httplib

request = urllib2.Request('http://xxxx.com')

request.add_header('Accept-encoding', 'gzip')

opener = urllib2.build_opener

f = opener.open(request)

这是关键:创建Request对象,添加一个 Accept-encoding 头信息告诉服务器你能接受 gzip 压缩数据。

这是关键:创建Request对象,添加一个 Accept-encoding 头信息告诉服务器你能接受 gzip 压缩数据。

然后就是解压缩数据:

import StringIO

import gzip

compresseddata = f.read

compressedstream = StringIO.StringIO(compresseddata)

gzipper = gzip.GzipFile(fileobj=compressedstream)

print gzipper.read

8 多线程并发抓取

单线程太慢的话,就需要多线程了,这里给个简单的线程池模板 这个程序只是简单地打印了1-10,但是可以看出是并发的。

虽然说Python的多线程很鸡肋,但是对于爬虫这种网络频繁型,还是能一定程度提高效率的。

fromthreading importThread

fromQueue importQueue

fromtime importsleep

# q是任务队列

#NUM是并发线程总数

#JOBS是有多少任务

q = Queue

NUM = 2

JOBS = 10

#具体的处理函数,负责处理单个任务

defdo_somthing_using(arguments):

printarguments

#这个是工作进程,负责不断从队列取数据并处理

defworking:

whileTrue:

arguments = q.get

do_somthing_using(arguments)

sleep(1)

q.task_done

#fork NUM个线程等待队列

fori inrange(NUM):

t = Thread(target=working)

t.setDaemon(True)

t.start

#把JOBS排入队列

fori inrange(JOBS):

q.put(i)

#等待所有JOBS完成

q.join

好书推荐

下面推荐一位粉丝出的书,这位粉丝多年前一直跟我们有联系,是我们公众号的忠实读者。Python功力很高,深大的硕士,现在学有所成,写了一本不错的数据挖掘的书,对大数据挖掘,人工智能有兴趣的同学可以看看,非常不错。

全书以识别数据谎言、造假和欺诈为目标,以数据挖掘为技术手段,以Python编程语言为实现工具,完整展现了数据挖掘的全过程。在业务层面,涉及互联网、财务、税务、审计、银行、电商、社保等行业具体应用场景。在技术层面,涉及统计分析、机器学习、深度学习等建模方法。本书具有“庞杂数据可视化,复杂模型简单化,技术语言通俗化”的特点。每个章节开始,综合运用各类图表进行可视化展示,帮助读者对庞杂的数据集有直观认识。在算法层面,将使用到的数学模型进行简化,用形象的比喻、简化的公式、简洁的图表等揭示复杂的算法原理。

量化: 如何用Python爬取创业板历史+实时股票数据!实战股票分析篇利用Pandas 9招挖掘五粮液股价|实战股票数据分析篇 Pandas滚动操作量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!如何用Python爬取全部800多只ETF基金数据!如何用Python写一个双均线策略如何用Python开发一个多策略机器人!上篇!Python量化系列-用布林策略买五粮液能赚多少钱?只要4秒钟!用Python 获取上证指数34年的历史日线数据!

入门: 最全的零基础学Python的问题| 零基础学了8个月的Python |实战项目|学Python就是这条捷径

干货:爬取豆瓣短评,电影《后来的我们》| 38年NBA最佳球员分析 |从万众期待到口碑扑街!唐探3令人失望| 笑看新倚天屠龙记| 灯谜答题王用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影

趣味:弹球游戏| 九宫格| 漂亮的花| 两百行Python《天天酷跑》游戏!

AI:会做诗的机器人| 给图片上色| 预测收入| 碟中谍这么火,我用机器学习做个迷你推荐系统电影

小工具: Pdf转Word,轻松搞定表格和水印!| 一键把html网页保存为pdf!|再见PDF提取收费!| 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换| 制作一款钉钉低价机票提示器!60行代码做了一个语音壁纸切换器天天看小姐姐!|


http://www.hkcw.cn/article/KumgpxXWtx.shtml

相关文章

干货 | 绩效考核“神器”?战略落地的金钥匙?这个工具你了解多少?

质量管理体系的建立离不开一套可衡量可评价的标准,如何将纷繁复杂的日常运营与服务细节量化体现,确保企业运营过程中的各个环节都能达到预定的质量标准?构建标准之后,如何将指标落地,层层分解,并和管理层与员工的绩效关联,保障服务质量的持续改善提升? 平衡计分卡(Bal…

宋代独善大字草书者——黄庭坚书法合集

点上方蓝色字体一键关注书画 | 篆刻 |鉴藏| 国学 |人文| 历史黄庭坚(1045年-1105年),字鲁直,号山谷道人,晚号涪翁,江西修水人,北宋著名文学家、书法家,为盛极一时的江西诗派开山之祖,与杜甫、陈师道和陈与义素有“一祖三宗”(黄庭坚为其中一宗)之称。与张耒、晁补之…

技嘉B650E AORUS PRO X USB4主板:用料实在,锐龙9000“新座驾”

今年 7 月,为迎接 AMD 锐龙 9000 系列处理器的到来,技嘉推出了一款全新 B650E 主板。其自带 2 个满血 USB4 协议 Type-C 接口以及一系列功能实用性上的改善升级,它就是技嘉 B650E AORUS PRO X USB4 主板(以下简称技嘉 B650E 电竞雕 USB4)。这款新品的表现究竟如何?接下来…

【盛·学堂】年化收益率与年利率傻傻分不清?看这篇就够了!

在我们挑选理财产品时,首先想到的是收益率高的产品,但与收益率相关的名词有好几个,经常傻傻分不清楚。比如货币基金中的“七日年化收益率”跟我们常说的年利率是一回事吗?今天我们就来区分一下年化收益率和年利率。年利率和年化收益率,这两个金融领域的概念,虽然看起来相…

中国34个省级旅游地图大全

中国位于亚洲东部,太平洋西岸,疆域辽阔,人口众多,是世界国土面积第三大国,世界第一大人口国。以北京为首都,包括23个省、5个自治区、4个直辖市、2个特别行政区。中国有5000多年文明史,是世界四大文明古国之一。中华文化源远流长、博大精深。诗词、戏曲、书法、国画等传统…

关联交易全方位解析

王彬 负险不彬 目 录 一、关联交易的界定 (一)关联关系的认定 (二)关联方的认定 (三)关联交易的认定 二、关联交易的监管要求和导向 (一)不正当关联交易的表现 (二)关联交易核查方式 (三)关联交易监管导向 三、各类金融机构关联交易管理 (一)商业银行内部交易/关…

重庆物业费标准2024版发布!如何将天价物业费打下来?

近日,重庆市发改委官网发布了《重庆市政府定价的经营服务性收费目录清单(2024年版)》,明确了多种收费标准。其中附件里包括了住房物业管理费的明细。1.中心城区 有电梯住宅:一级1.00元/平方米月;二级1.30元/平方米月;三级1.60元/平方米月;四级1.90元/平方米月。 无电梯…

国外威客网fiverr注册教程,新手一看就懂

如果你接触过国外平台,那么就应该知道fiverr,这是一个非常知名的自由职业者平台,很多外国人都已经通过这个平台实现了财富自由,甚至也有很多国人也都在这个平台获取到一笔非常不错的收入。 那么今天倪叶明创业工作室详细的教大家如何在fiverr注册一个店铺,这样大家就可以在…

原创2025年五行属什么命 2025属蛇人命运分析

每个人的命运各不相同,就算是同一种属相,他其中也会有金木水火土的差别,如果想要轮换到同一种命,那得经过长达六十年的轮回。而2025年是蛇年,这一年也是属蛇人的本命年,那么在这一年出生的孩子都是什么命呢?一、2025年属蛇人什么命2025年是生于农历乙巳年,天干为乙,地…

北京奥运会冠军陈燮霞:靠作弊获得金牌,被查后如今销声匿迹

声明:本文内容均是根据权威资料结合个人观点撰写的原创内容,在今日头条全网首发72小时,文章中有5秒免费广告可增加创作收益,感谢各位看官点击支持原创,文末已标注文献来源及截图,请知悉。声明:本文内容均是根据权威资料结合个人观点撰写的原创内容,在今日头条全网首发7…

做流程图用什么软件比较好?这八款好用强大的流程图软件别错过!

很多朋友问,做流程图用什么软件比较好?流程图已成为表达思维、组织信息、制定计划和解决复杂问题的重要工具。选择一款合适的流程图软件,能够极大地提升工作效率和沟通效果。做流程图用什么软件比较好?就成为了很多人心中的疑问,本文将为您介绍八款强大而好用的流程图软件…

原创张兰连续炮轰前儿媳,之前曝其出轨,现在说骗婚,大S难得没回应

张兰又双叒叕上热搜了,还是拿前儿媳大S开刀。张兰说的可能都是气话,现在儿子不便说前妻坏话,因为这个恶人必须张兰来做,汪小菲如果激怒了前妻,很难见到两个孩子,孩子是无辜的,所以张兰当恶人,因为大S曾在离婚协议里注明,不准张兰去湾湾看她的孩子,所以每次张兰见孙女…

原创重庆一垃圾车撞垮民房墙壁,当地:被困人员已被救出送医

7月9日,在重庆市石柱土家族自治县大歇镇发生了一起严重的交通事故,一辆垃圾清运车失控撞向了路边的民房,造成了民房严重受损,人员被困。这起突如其来的事故不仅对当地居民的生活造成了影响,也引起了社会的关注和担忧。 根据现场群众拍摄的视频资料,我们可以看到,一辆大型…

Excel单元格内换行,6个快速换行技巧分享!

“我刚刚在编辑一个Excel表格时,想在单元格内进行换行输入,但不知道具体应该怎么操作,有什么比较实用的方法推荐吗?”在Excel中,我们经常需要在一个单元格内输入多行文本,这时候就需要使用到单元格内换行的技巧。Excel单元格内换行怎么操作? 本文给大家总结了6个简单实用…

看了这40幅图,草字你就会写了

草书是我国传统书体的一种,它用减缩笔画、连接字形、并借偏旁等方法,突破了汉字的繁琐笔画和方块体势,书写起来比行书更简便、快速,从而进一步提高了汉字的书写效率。但草书的写法和变化很多,不易辨认,多少年来便已成为专供欣赏的书法艺术而流传下来。 邓散木编写此书法教…

揭秘回复术士的重来人生中的二公主诺伦

在《回复术士的重来人生》这部作品中,有一个角色让人印象深刻,她就是二公主诺伦。她的智商非常高,甚至在男主愈之勇者一周目的时候,就已经看穿了棍勇的真实身份——一个重生的冒险者。然而,她并没有选择复仇,而是选择了观察和等待。 二周目的时候,棍勇已经成为后宫的一员…

丁腈橡胶(NBR)简介

丁腈橡胶(NBR)是一种由丙烯腈和丁二烯单体共聚而成的聚合物,主要通过低温乳液聚合法制备。NBR具有良好的耐油性、耐磨性和耐热性,以及较强的粘接力。然而,它也存在一些缺陷,如较低的耐低温性和耐臭氧性,以及较低的绝缘性能。此外,由于其浅褐色弹性体特性,NBR对脂肪烃油…

19岁花滑女神性侵16岁男队员,还有一个女滑手在边上拍视频…..

83警视 聚焦基层工作生活! 声明:版权归原作者所有,感谢原作者的辛苦创作,如转载涉及版权等问题,请作者与我们联系,我们将在第一时间删除处理。 来源:网络综合(本文内容均引用公开报道。) 来源:上海全知道,ID:i-know021 转载请标明出处 稍微熟悉体育比赛的朋友都知道…

原创十六国时期的苻坚,为何被称作历史上最令人惋惜的帝王?

提到苻坚这个名字,很多对中国古代史不太熟悉的人,可能会觉得有点发懵,想不起来他是谁。就算是很多历史爱好者,对于这个名字的印象,也基本仅限于淝水之战。在淝水之战当中,苻坚带领前秦数十万大军,败给了东晋的数万北府兵。而且,淝水之战打完以后,前秦很快就迅速崩溃,…

华为开发者大会2024盛大举行,余承东宣布纯血鸿蒙冲刺商用

2024年6月21日,华为开发者大会(HDC 2024)在东莞松山湖盛大召开,此次大会不仅是华为向全球展示其最新科技成果的窗口,更是全球开发者和生态合作伙伴的盛大聚会。 HDC 2024大会期间,华为精心策划了多样化的交流活动,如深入探讨的专题论坛、富有教育意义的HarmonyOS学生公开…