更多课程 选择中心


Python培训

400-111-8989

Python培训

  • 首  页
  • 培训课程
  • 授课讲师
  • 视频教程
  • 开班盛况
  • 合作企业
  • 达内介绍
  • 联系达内
  • Python教程
  • Python问答
  • Python职场
  • Python知识
  • Python资讯
  • Python热点
Python培训 >  Python教程知识 > 正文

Python爬虫入门学习指南及案例

  • 发布:韩思先生
  • 来源: 韩思工作室
  • 时间:2018-03-19 15:22

前段时间利用周末时间研究网络 爬虫和反爬虫技术,然后写了篇文章《网络爬虫和反爬虫技术研究》,顺便简单了解了下Python,这网络爬虫和RPA软件机器人可不是一回事,差别不小,在那篇文章里讲了较多,Python这种编程语言简单易懂,比较适合用来开发网络爬虫。


最近在美国的一位老朋友知道我在研究人工智能应用,特意推荐给我一位美国14岁华裔女孩杨君熙(Emma Yang)的手机AppTimeless(永恒)众筹项目。在网上查了些资料,真是不看不知道,看了只有“佩服”儿子,向这位00后女孩学习!(参见前两天专门写的一篇文章《众筹项目手机App Timeless(永恒)背后的故事》)


仔细想想,这位00后的杨小姐这么了不起,一方面的而且确是她自己天才+努力,一方面也和她的父母从小时候对她的教育分不开,杨小姐在6岁就开始接触编程,6岁!?不禁想到我6岁在做什么?爬树?掏鸟蛋?玩泥巴?再看看我们家那位00后小朋友,6岁好像最喜欢看动画片!真是别人家的孩子不能比!也不用比!我们努力赶上来!


这个周末从项目组借了Python的书回来,就是专门和我家这位00后一起学习这门语言。从哪里开始呢?Python适合开发网络爬虫,就从一个简单的网络爬虫开始!

 

我家这位00后最喜欢音乐,经常在写作业之余偷偷带上耳机听音乐,因此,我们决定用网络爬虫去“扒”百度音乐里的好听音乐!这就是我们这个周末的目标!

 

互联网行业发展到现在这个阶段,网络上太多的信息,有用的,没用的,不能有效利用信息就等于没有信息,由此学习网络爬虫的人越来越多,一方面,互联网可以获取的有价值的数据越来越多,而另一方面,像 Python这样的编程语言使网络爬虫开发变得非常简单、容易上手。

 

利用网络爬虫我们可以获取大量的价值数据,从而获得感性认识不能得到的信息,在以下场景种网络爬虫作用非常大:


(一)爬取数据,进行市场调研和商业分析

  • 知乎:爬取优质答案,并筛选出各个话题下最有价值的内容。

  • 淘宝、京东:爬取商品、评论及销量数据,并在此数据基础上对各种商品及用户的消费场景进行分析。

  • 链家:爬取房产买卖及租售信息,分析房价变化趋势、然后做不同区域的房价分析。

  • 智联:爬取各类职位信息,然后分析各行业人才需求情况及薪资水平。

  • 雪球网:爬取雪球高回报用户的行为,对股票进行分析和预测。

(二)作为机器学习、数据挖掘的原始数据

  • 机器学习,抓取更多维度的数据,便于做出更好的模型。

  • 图像识别,抓取网络上的大量的图片作为训练集进行训练,提高图像识别的精度。

(三)爬取优质的资源:图片、文本、视频

  • 爬取知乎等图片网站,获得各种图片,然后怎么想怎么用就看自己的需要了。

  • 爬取微信公众号文章,分析新媒体内容运营策略!

     

在没有网络爬虫的情况下,我们只能手动来完成这个大量重复而有枯燥简单的复制粘贴操作,这个就是“人肉爬虫”了!非常浪费人力,假如想要爬下来100万行的数据,“人肉爬虫”需要两年废寝忘食的工作!而高性能的网络爬虫在一天之内就能完成!而且,不需要任何人为干预!

 

对于很多人而言,或者会认为网络爬虫的技术很是复杂,技术要求很高,用Python来开发一个网络爬虫可能需要精通Python,需要掌握Python各个知识点!但是,其实不然,我学习一门新的编程语言的经验就是,翻翻书,直接开干,做完一个项目,啥也会了!亲自实践过,做个伪专家还是可以的。

 

在开始开发网络爬虫之前,首先要熟悉一下Python编程的套路,打开Python3.6.4安装后自带的demo

 

 

学完这些Python自带的demo后,基本就掌握了Python编程的基础,能够看懂并写一些Python程序了。


但是就这样用Python开发一个网络爬虫来爬百度音乐里的哪些好听的音乐还不够,这需要掌握正确的程序设计方法和一些网络爬虫基础知识,正好上个周末才研究了网络爬虫和反爬虫技术,懂得这些爬虫的工作原理,简单总结一下:

 

第一、了解网络爬虫的基本工作原理


网络爬虫基本上都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来工作,而这其实也是模拟了我们使用浏览器获取网页信息的过程。简单来说,我们向服务器发送请求后,会得到返回的页面,通过解析页面之后,我们可以抽取我们想要的那部分信息,并存储在指定的文档或数据库中。


在这部分需要了解 HTTP 协议及网页基础知识,POST\GETHTMLCSSJS等,对于开发网络爬虫而言,简单了解就可以,不需要什么系统学习。

 

第二、学习 Python 包并实现基本的爬虫过程


查看了一下Python的技术资料,发现和爬虫相关的包很多:urllibrequestsbs4scrapypyspider 等,建议从requests+Xpath开始,requests 负责连接网站,返回网页,Xpath 用于解析网页,便于抽取数据。而如果使用BeautifulSoup,就会发现这比Xpath 要省事不少,一层一层检查元素代码的工作全都省略了。


掌握这些之后,就会发现其实网络爬虫的基本套路都差不多,静态网站根本不在话下,小猪、豆瓣、糗事百科、腾讯新闻等差不多可以上手搞定了。


当然了,如果需要爬取异步加载的网站,就还要继续学习浏览器抓包分析真实请求或者学习SeleniumWeb Driver来实现,这样,知乎、时光网这些动态的网站也就基本没问题了。因为这两年在工作中我对于RPA技术研究较多,Selenium技术不在话下!

 

在这个过程中需要了解一些Python的基础知识,这些在Python自带的demo里都有涉及:

  • 文件读写:用来读取参数、保存爬下来的内容

  • list(列表)dict(字典):用来序列化爬取的数据

  • 条件判断( if/else ):解决爬虫中的判断是否执行

  • 循环和迭代( for ……while ):用来循环爬虫步骤

 

第三、了解非结构化数据的存储


网络爬虫爬回来的数据可以直接用文档形式存在本地,也可以存入数据库中。在数据量不大的时候,可以直接通过 Python 的语法或 pandas 的方法将数据存为csv这样的文件。当然,可能爬回来的数据并不是干净的,会有缺失、错误等等,这就还需要对数据进行清洗,可以学习 pandas 包的基本用法来做数据的预处理,从而得到更干净的数据。

 

第四、学习 scrapy并搭建工程化的爬虫


在掌握了前面讲到的这些技术后,开发针对一般量级和复杂程度数据的网络爬虫就基本没有问题了,但是在遇到非常复杂的情况,仍然会力不从心,这个时候,强大的 scrapy 框架就非常有用了。scrapy 是一个功能非常强大的网络爬虫框架,不仅能便捷地构建request,还有强大的 selector 能够方便地解析 response,然而最让人惊喜的还是其超高的性能,由此可以将网络爬虫工程化、模块化,学会 scrapy后,就可以自己去搭建一些爬虫框架,成为了一个合适的网络爬虫工程师了。


安装scrapy框架很简单,运行命令行就可以(“pip install Scrapy ”)。

 

第五、学习数据库基础以应对大规模数据存储


网络爬虫爬回来的数据量小的时候,可以用文档的形式来存储,一旦数据量大了,这就有点行不通了,所以掌握一种数据库是必须的,学习目前比较主流的 MongoDB OKMongoDB 可以很方便地用来存储一些非结构化的数据,比如各种评论的文本,图片的链接等等,当然了,也可以利用PyMongo这个组件更方便地在Python中操作MongoDB


开发网络爬虫,其实用到的数据库知识非常简单,主要是数据如何入库、如何进行提取。对于我而言,这个完全不是问题,我刚毕业就做了两年Oracle DBA,后来在工作前十年一直都是数据库设计专家。

 

第六、掌握各种技巧来应对特殊网站的反爬措施


当然,开发网络爬虫过程中也会经历一些重大打击,例如被网站封IP、比如各种奇怪的验证码、userAgent访问限制、各种动态加载等等。遇到这些网站平台的反爬虫手段,就需要一些高级的技巧来应对,常规的比如访问频率控制、使用代理IP池、抓包、验证码的OCR处理等等。往往网站在高效开发和反爬虫之间会偏向于前者,而这也为网络爬虫提供了闪展腾挪的空间,掌握这些应对反爬虫的技巧,绝大部分的网站还是可以搞定的。

 

第七、开发分布式网络爬虫实现大规模并发采集


开发一个网络爬虫爬取基本数据已经不是问题了,但是这里有一个效率问题,在爬去海量数据的时候,网络爬虫的运行效率就是设计和构架的一个关键点,而用以解决这个问题的就是“分布式网络爬虫”。


在计算机技术上,“分布式”这个概念很是高大上,最近很火的区块链的本质就是“分布式的账本系统”,但是透过现象看本质,分布式网络爬虫其实就是利用多线程的原理让多个网络爬虫同时工作,需要掌握 Scrapy +MongoDB + Redis 这三种工具。Scrapy 前面简单介绍过来,主要用于做基本的页面爬取,MongoDB 用于存储爬取的数据,而Redis 则用来存储要爬取的网页队列,也就是任务队列。所以有些概念听起来很吓人,但其实分解开来看,也不过如此。当能够写分布式网络爬虫的时候,那么接下去就可以尝试打造一些基本的网络爬虫架构来实现一些更加自动化的数据获取。

 

简单演示一下百度音乐网络爬虫的运行:

 


从百度音乐直接下载MV没有问题了,很快发现很多非常酷的音乐不在百度音乐储存着,而是从音悦台分享过来的,怎么从音悦台下载喜欢的音乐文件呢?打开页面分析了一下HTMLCSS JavaScript,重新写了一个python脚本,搞定!这就可以用Python来下载音悦台的高清MV了。


现在,我们家的这位00后可以使用Python开发的网络爬虫来爬到他喜欢的各种最新流行音乐了,就算是将百度音乐和音悦台所有的MV都给爬下来也不是问题!“王者荣耀主题曲”?不行!不行!我不答应!写作业去!写作文去!复习功课去!预习功课去!小子,还治不了你等我把来把黄沾先生作词作曲的“沧海一声笑”爬下来!欣赏ing...


 

简单总结一下,学习用Python来开发网络爬虫,不要系统地去啃书本,而是要找一个实际项目做一做,例如这个周末我和儿子尝试着做的百度音乐网络爬虫,简单学习一下就开始干,遇到问题上网查一下解决问题,问题都解决了,网络爬虫开发出来调试通过可以运行了,然后此时总结,这个时候基本上一般地网络爬虫都可以开发了。

学习网络爬虫技术,不需要系统的精通一门语言,也不需要特别高深的数据库技术,最高效的学习途径就是从实际的项目中去学习这些零散的知识点,东成西就,然后搞定!

预约申请免费试听课

填写下面表单即可预约申请免费试听! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇: 基础知识:Python与C语言异同
下一篇: Python入门知识点,Python入门基础知识

2021年Python全套免费视频教程在哪里?

Python编程学习路线

Python最高有几级?

人工智能与语音遥控的区别?

  • 达内
  • 达内课堂
  • 少儿编程
  • 达内高手
  • 英才添翼

关于达内

达内简介 联系我们 隐私声明 法律公告 业务合作

其他服务

培训证书查询 投诉与建议

投诉邮箱

tousu@tedu.cn

客服电话

400-111-8989
  • 扫码领取资料

    回复关键字:视频资料

    免费领取 达内课程视频学习资料

Copyright © 2023 Tedu.cn All Rights Reserved 京ICP备08000853号-56 京公网安备 11010802029508号 达内时代科技集团有限公司 版权所有

选择城市和中心
北京

  • 达内北京中心
黑龙江省

  • 达内大庆中心
吉林省

  • 达内长春中心
辽宁省

  • 达内沈阳中心
  • 达内大连中心
内蒙古

  • 达内呼和浩特中心
天津

  • 达内天津长宏中心
  • 达内天津广开中心
河北省

  • 达内河北中心
山西省

  • 达内晋中中心
  • 达内运城中心
陕西省

  • 达内西安省体中心
山东省

  • 达内济南山大路中心
  • 达内济南会计中心
  • 达内济南大明湖中心
  • 达内青岛山东路中心
  • 达内烟台海港路中心
  • 达内潍坊中心
  • 达内临沂中心
  • 达内青岛CBD中心
  • 达内青岛西海岸中心
  • 达内青岛城阳中心
河南省

  • 达内郑州嵩山路中心
  • 达内郑州金水路中心
  • 达内南阳卧龙中心
江苏省

  • 达内南京总统府中心
  • 达内南京新街口中心
  • 达内南京软件谷中心
  • 达内南京明故宫中心
  • 达内南京常府街中心
  • 达内苏州南门中心
  • 达内苏州园区中心
  • 达内苏州石路中心
  • 达内无锡宝龙中心
  • 达内无锡恒隆中心
  • 达内徐州中心
安徽省

  • 达内芜湖中心
  • 达内蚌埠中心
上海

  • 达内上海陆家嘴中心
  • 达内上海人民广场中心
  • 达内上海徐家汇中心(童程童美)
  • 达内上海浦东中心(童程童美)
  • 达内上海长寿路中心(童程童美)
湖北省

  • 达内武汉光谷中心
四川省

  • 达内成都钻石中心
重庆

  • 达内重庆中心
湖南省

  • 达内长沙中心
江西省

  • 达内南昌人民公园中心
浙江省

  • 达内华东大学生实训基地
  • 达内杭州中心
  • 达内宁波中心
  • 达内温州中心
  • 达内金华中心
贵州省

  • 达内贵阳中心
福建省

  • 达内福州金山中心
  • 达内厦门湖滨南中心
  • 达内福州鼓楼中心
云南省

  • 达内昆明中心
广西省

  • 达内南宁中心
广东省

  • 达内华南大学生实训基地
  • 达内深圳宝安体育馆中心
  • 达内深圳童程童美中心
  • 达内珠海中心
  • 达内东莞南城中心
  • 达内东莞东城中心
  • 达内佛山中心
  • 达内中山中心
海南省

  • 达内海南中心
台湾

  • 达内台北中心

深圳SEO优化公司沧州seo网站推广吕梁模板推广多少钱开封外贸网站建设哪家好铜仁营销网站多少钱镇江企业网站建设推荐营口企业网站改版报价四平模板推广报价赣州关键词按天扣费公司永州SEO按天收费公司开封建站多少钱防城港设计网站公司娄底网站优化排名哪家好宁波外贸网站设计推荐怒江网站关键词优化哪家好和田建网站推荐盐田网站搜索优化推荐防城港seo优化报价诸城百度爱采购报价聊城设计网站推荐坪山SEO按天扣费爱联网站定制公司延安网站优化按天计费推荐宝鸡网站定制徐州百度竞价抚顺seo网站优化报价黔东南百搜标王滨州模板网站建设福永网站推广系统多少钱大芬SEO按天扣费哪家好郴州百度竞价包年推广报价歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化