利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如:
在目标的驱动下,你的学习才会更加精准和高效。那些所有你认为必须的前置知识,都是可以在完成目标的过程中学到的。这里给你一条平滑的、零基础快速入门的学习路径。在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习Python的小伙伴们,大几千了吧,各种各样的人群都有,特别喜欢看到这种大家一起交流解决难题的氛围,群资料也上传了好多,各种大牛解决小白的问题,这个Python群:103456743欢迎大家进来一起交流讨论,一起进步,尽早掌握这门Python语言。
-❶-
学习 Python 包并实现基本的爬虫过程
大部分爬虫都是按“发送请求——获得页面——解析页面——抽取并储存内容”这样的流程来进行,这其实也是模拟了我们使用浏览器获取网页信息的过程。
-❷-
了解非结构化数据的存储
-❸-
学习 scrapy,搭建工程化的爬虫
-❹-
学习数据库基础,应对大规模数据存储
- ❺ -
掌握各种技巧,应对特殊网站的反爬措施
- ❻-
分布式爬虫,实现大规模并发采集
爬取了当前比较火的游戏壁纸,MOBA游戏《英雄联盟》,手游《王者荣耀》、《阴阳师》,FPS游戏《绝地求生》,其中《英雄联盟》的壁纸最难爬取,这里展示爬取《英雄联盟》全部英雄壁纸的过程。
先看一下最终爬取的效果,每个英雄的壁纸都被爬取下来了:
139个英雄壁纸文件夹
“黑暗之女 安妮”的12张壁纸:
小红帽 安妮 高清大图
1.爬虫流程图
至此对我要爬取的对象已经有了一定的了解,对于具体爬取方法也有了想法,可以设计如下爬虫流程图:
2.设计代码整体框架
根据爬虫流程图,我设计了如下代码框架:
这个代码框架非常容易读懂,主要就是run()函数,run()函数完成了这样一套工作:创建LOL文件夹——获得键盘输入的信息——若信息为“All”则爬取全部英雄壁纸,否则爬取单个英雄壁纸。
3.爬取所有英雄信息
首先我们要解析champion.js文件,得到英雄英文名与id的一一对应关系。
对于官网网站上的所有英雄信息页面,由于是用 JavaScript 加载出来的,普通方法并不好爬取,我使用了 Selenium+PhantomJS 的方法来动态加载英雄信息。
解析的英雄信息
4.爬取英雄壁纸
得到每一个英雄的信息后,我们就可以开始愉快的爬取它们的壁纸啦~定义get_image(heroid,heroframe) 函数,用于爬取单个英雄的全部壁纸。
运行代码时注意保持网络畅通,如果网速太慢可能会爬取失败。在3兆有线网的网速下爬取全部139个英雄的全部高清壁纸(约一千张图)大概要3-4分钟。
《王者荣耀》、《阴阳师》、《绝地求生》等其他游戏的壁纸也是同样道理就可以爬取了,据我实践,《英雄联盟》的爬取难度是最高的,因此将上述过程弄懂了,自己再编写代码爬其他游戏就易如反掌了。
本次对【常州美食】全部美食推荐 进行一次爬虫实践,主要想爬取的信息有:餐厅的名称、餐厅的评分、餐厅评论数、餐厅的地址、人均消费价格……
最终爬下来的数据保存为CSV如下:
美团使用了反爬虫机制,要模拟浏览器来进行爬取。经过几次尝试,发现只对 Cookie 和 User-Agent 进行校验。
爬到第一组数据
爬到第一组数据之后,接着就是想翻页的事情。翻页特别简单,于是又爬取了商家电话、营业时间等信息。
打包写个函数
成功地爬到了相应的信息
但好景不长,爬到一半的时候被403了。
因为被封了,我们只能用无痕方式来访问了。看了下,决定采用多个 Cookie 然后随机调用的方式来避免被封了。最终使用了17个cookie,经过测试,可以高速爬取不被封。
这次的爬取在这里结束了,但是爬回来的数据可以做很多分析,比如在不同的地段外卖的情况,商家的分布等等。
本来就想从事“数据分析师”这个岗位,所以就想了解这个岗位的薪资、要求、以及在我所生活城市的主要分布点,而拉勾网是权威的互联网行业招聘平台,所以爬取拉勾网上的“数据分析师”职位信息有很好的代表性。
最终爬到的数据存在MongoDB中如下:
学习翻页的时候把引号添上运行时报了JSONDecodeError的错,本人被引号折腾了许久,分享出来希望大家引以为戒。
踩了两个坑之后,就开始做课后作业了,没想到对于一个新手来说困难一茬茬。开始我的思路是找连接,但是采集的数据里没有连接,所以就点击进入详情页面,看有什么规律没?然后就尝试着多次点击各详情页面,发现页面的数字和采集的某个数据能匹配。例如:
某个详情页面
找到突破口就开始行动:
DOCrequest url equest method
多次尝试(还是费了一些时间):request url和网址是一样的,那突破口就算找到,数据是DOC格式,request method :get,那就是又回到了熟悉的战场了。
思路:遍历positionId,用format,如:
详情网页
xpath方法获取数据
部分数据:
一次次尝试,优化后的代码,这个主要是学习和创作的过程(爬取详情页面是我的杰作)。
本文只讲了思路!让你有方法具体如何学Python爬虫!
谢谢阅读!
联系客服