打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
爬虫学多久能爬取大规模数据!神级程序员:这篇够你学一个月!

利用爬虫我们可以获取大量的价值数据,从而获得感性认识中不能得到的信息,比如:

在目标的驱动下,你的学习才会更加精准和高效。那些所有你认为必须的前置知识,都是可以在完成目标的过程中学到的。这里给你一条平滑的、零基础快速入门的学习路径。在给大家分享之前呢,小编推荐一下一个挺不错的交流宝地,里面都是一群热爱并在学习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爬虫!

谢谢阅读!

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
基础Python爬虫很简单,遇到反爬就不知所措了?
程序员是怎么通过网络爬虫抓取58租房信息的
用Python来制作简单的爬虫,爬取到你想要的图片
python抓取数据
一小时入门Python爬虫!Python爬取租房数据实例分享
凭借这5步,我30分钟学会了Python爬虫
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服