diff --git a/CollectData/0.课程背景.md b/CollectData/0.课程背景.md new file mode 100644 index 0000000..906c88a --- /dev/null +++ b/CollectData/0.课程背景.md @@ -0,0 +1,120 @@ +# 0.前言 + +本文中带*的部分为选学部分,对学有余力的同学进行相关法律风险的讲解 +- [0.前言](#0前言) + - [0.1课程背景](#01课程背景) + - [0.2八爪鱼数据采集器简介](#02八爪鱼数据采集器简介) + - [0.3软件安装](#03软件安装) + - [0.4爬虫的"盗亦有道"*](#04爬虫的盗亦有道) + +## 0.1课程背景 + +随着数字化转型的推动与发展,数据的分析与挖掘在各行各业都变得尤为重要,而包括机器学习工作的进行都离不开相应的数据,因此数据的获取就显得尤为重要。在进行相关的项目时,我们可能需要从互联网上获取相关的数据,人工获取数据工作量大,工作流程复杂,不利于大批量的数据获取。爬虫为数据获取提供了一个较好的解决方案,通过解析网页的信息从而进行数据的获取。 + +Datawhale组队学习也提供了爬虫的相关课程: + +https://github.com/datawhalechina/team-learning-program/tree/master/WebSpider + +https://github.com/datawhalechina/team-learning-program/tree/master/OfficeAutomation + +对于python而言,虽然有封装的比较好的爬虫库,但是对于小批量数据的获取仍然有较高的门槛,能不能有一种更简单的方法让大家获取数据,最好能够不写代码或者快速迭代。对于市场而言,有需求就有市场,于是市面上真的有一款这样的软件,不用写代码就能够获得互联网上的相关数据。 + +## 0.2八爪鱼数据采集器简介 + +八爪鱼数据采集器在客户端中内置了浏览器,通过类似于selenium这样的浏览器驱动来控制浏览器,从而达到数据采集的目的,和python+selenium采集数据的原理比较类似。 + +八爪鱼数据采集的优势: + +- 可视化操作流程,上手门槛低,学习曲线平滑 +- 通过驱动浏览器进行数据采集,能适应绝大多数网页的数据采集 +- 页面识别相对智能,大幅度减少数据采集开发时间 + +八爪鱼数据采集的劣势: + +- 页面定制化操作(如:验证码识别)相对困难 +- 不适合大批量数据采集,当采集数据量超过1万及以上需要增值服务 +- 采集速度慢,不适合高并发数据采集 + +因此针对八爪鱼的特点,本课程适合不会爬虫代码、小批量数据采集的同学进行学习与数据采集训练。 + +## 0.3软件安装 + +八爪鱼官网:https://www.bazhuayu.com/ + +Windows操作系统下载链接:https://www.bazhuayu.com/download/windows + +Mac操作系统下载链接:https://www.bazhuayu.com/download/mac + +以Windows操作系统安装为例: + +![安装教程](.\img\1.png) + +选择目标文件夹,点击安装即可完成软件的安装 + +Q&A + +1.**八爪鱼安装的系统要求**: + +Win7/Win8/Win8.1/Win10(x64位)选择八爪鱼8版本安装,即上文所提到的链接 + +XP系统和32位系统,选择八爪鱼7版本安装,安装链接:https://www.bazhuayu.com/blog/7azsm + +2.**安装过程中提示【安装已终止,安装程序并未成功地运行完成】** + +![安装提示](./img/2.png) + +出现原因:之前安装过老版本,没有卸载干净,有残留 + +解决方法① :删除八爪鱼8缓存文件夹。找到\AppData\Roaming\Octopus8 文件夹,将Octopus8 文件夹删除。 + +![文件夹](./img/3.png) + +解决方法②:打开【控制面板】-【程序】,将之前安装过的版本卸载干净。 + +点击控制面板-->点击卸载程序-->找到Octopus-->右键点击卸载 + +![卸载程序](./img/4.png) + +## 0.4爬虫的"盗亦有道"* + +做网络爬虫的同时我们也要注意到爬虫的法律风险,当然正常的爬虫使用是不会造成相应的法律风险,不过我们仍然要了解相应的法律风险。 + +**1、如果爬虫程序干扰了被访问的网站或系统正常运营** + +在法律责任方面,如果爬虫程序干扰了被访问的网站或系统正常运营,根据《刑法》第二百八十六条的规定,**违反国家规定,对计算机信息系统功能进行删除、修改、增加、干扰,造成计算机信息系统不能正常运行,将构成“破坏计算机信息系统罪”。** + +而近日出台的《数据安全管理办法》(征求意见稿)中,则专门针对数据爬取的条款进行了首次规定。根据《管理办法》,网络运营者采取自动化手段访问收集网站数据,不得妨碍网站正常运行;此类行为严重影响网站运行,如自动化访问收集流量超过网站**日均流量三分之一**,网站要求停止自动化访问收集时,应当停止。 + +**2、** **如果爬虫程序规避网站经营者设置的反爬虫措施或者破解服务器防抓取措施** + +在法律责任方面,如果爬虫程序规避网站经营者设置的反爬虫措施或者破解服务器防抓取措施,非法获取相关信息,根据《刑法》二百八十五条的规定, **违反国家规定,侵入除国家事务、国防建设、尖端科学技术领域以外的计算机信息系统或者采用其他技术手段,获取该计算机信息系统中存储、处理或者传输的数据,或者对该计算机信息系统实施非法控制,将构成非法侵入计算机信息系统罪。** + +**3、** **如果爬虫程序采集的内容涉及商业机密或公民个人信息** + +根据《刑法》第二百八十七条的规定, **利用计算机实施金融诈骗、盗窃、贪污、挪用公款、窃取国家秘密或者其他犯罪的,依照本法有关规定定罪处罚。** + +如果爬虫程序采集了商业机密或公民个人信息(包括但不限于公民的姓名、身份证件号码、通信通讯联系方式、住址、账号密码、财产状况、行踪轨迹等),情节严重的,则可能分别构成“侵犯商业秘密罪”和“侵犯公民个人信息罪” + +对于爬虫的使用者而言,我们应该要注意爬虫的使用规范 + +- 要明确自己制作的爬虫程序是否涉及抓取对象的个人信息,如社交信息、财产信息、联系信息等; +- 要明确自己爬取的数据是否涉及国防安全、商业机密以及其它相关敏感信息 +- 要明确自己的爬虫程序是否会对对方服务器的的正常运营产生相应的影响 + +参考链接: + +https://www.bazhuayu.com/tutorial8/81azwthz + +https://zhuanlan.zhihu.com/p/88872696 + +**Task0 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) \ No newline at end of file diff --git a/CollectData/1.认识八爪鱼.md b/CollectData/1.认识八爪鱼.md new file mode 100644 index 0000000..46ef611 --- /dev/null +++ b/CollectData/1.认识八爪鱼.md @@ -0,0 +1,129 @@ +# 1.初识八爪鱼 + +- [1.初识八爪鱼](#1初识八爪鱼) + - [1.1界面认识](#11界面认识) + - [1.2快速上手](#12快速上手) + - [1.3数据导出限制](#13数据导出限制) + - [1.4练习与思考](#14练习与思考) + +## 1.1界面认识 + +安装好八爪鱼的软件后,我们能在桌面上看到八爪鱼的图标 + +![logo](./img/logo.png) + +点击图标后运行相关程序,进入程序后会进入到一个登陆页面 + +![登陆页面](./img/5.png) + +如果没有账号的话,可以按照程序的要求先注册一个,注册完成后登陆到八爪鱼的界面 + +![界面](./img/6.png) + +当你看到这个界面的时候,表示前面的软件安装工作已经全部完成了 + +## 1.2快速上手 + +> 本项目以36kr快讯作为案例 + +八爪鱼程序启动有2个入口,一个是首页的网页地址入口,另一个是软件左上角的+新建 + +八爪鱼的软件是如何运行的呢? + +![流程图](./img/7.png) + +你说某公众号的运营人员,你需要关注互联网方向的实时动态,于是你想爬取36kr的快讯,你去官网上找到了快讯的网站 + +36kr快讯:https://36kr.com/newsflashes + +打开八爪鱼采集器,在主页的搜索框中输入36kr快讯的地址,点击开始采集 + +![36kr](./img/1.gif) + +在屏幕的右侧有一个操作提示,点击自动识别网页,点击后会进入到识别网页的过程 + +![自动采集](./img/2.gif) + +等网页识别完成后我们就看到了八爪鱼自动识别的结果 + +![识别结果](./img/9.png) + +点击生成采集设置 + +![生成采集设置](./img/10.png) + +点击保存并开始采集 + +![开始采集](./img/11.png) + +数据采集的方式有2种,一个是本地采集,也就是程序运行在你的电脑上,一个是云采集,也就是用八爪鱼的服务器进行采集,其中云采集为八爪鱼的增值服务,是属于收费项目,因此在本次课程中我们选择本地采集 + +点击后,我们的数据采集工作就开始了 + +![开始采集](./img/12.png) + +点击停止采集,就可以停止数据采集的工作 + +![停止采集](./img/13.png) + +选择导出数据 + +![导出数据](./img/14.png) + +我们可以看到,八爪鱼的数据导出支持很多种形式,比如excel、csv、HTML以及json,甚至可以将数据导入到数据库种中,因此数据的存储形式相当的方便 + +我们选择导出到excel的形式 + +导出完成后有相应的提示 + +![导出完成](./img/15.png) + +这个时候我们就看到了我们采集的相关数据 + +![采集的数据](./img/16.png) + +打开八爪鱼,在我的任务种就可以看到我们保存的相关任务 + +点击我的任务 + +![我的任务](./img/17.png) + +## 1.3数据导出限制 + +八爪鱼数据采集器对数据的导出有一定的限制,毕竟是个商用软件,增值服务收费也是能理解的,目前八爪鱼提供了几个版本的的选择 + +具体收费方案可以查看链接:https://www.bazhuayu.com/plan + +免费版的数据导出上限是1万条,每次启动任务导出的最大数据量是1万,这个数据量对于小批量数据采集来说也是非常大了,如果我们采集的数据量超过了1万条,可以选择购买增值服务,或者将采集任务分多个批次完成,从这个角度来看八爪鱼对于日常使用体验还是极佳的。 + +八爪鱼也提供了教育公益版本,进行在校师生认证可以获得专业版12个月的免费使用权限,可以导出10万的数据量,这点还是很棒的。 + +公益板块链接:https://www.bazhuayu.com/edu + +![公益](./img/18.png) + +## 1.4练习与思考 + +前面的操作步骤你学会了吗? + +如果还不是很清楚那就上手试一试吧,完成36kr快讯的数据采集,并将数据导出为excel形式 + +思考部分 + +1.体验了八爪鱼采集后,你觉得它能够用在学习和工作中的哪些方面?、 + +2.推测一下,你觉得八爪鱼的工作原理是什么? + +3.和python爬虫相比,八爪鱼的优势和劣势是什么? + +**Task1 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) \ No newline at end of file diff --git a/CollectData/2.自动识别初体验.md b/CollectData/2.自动识别初体验.md new file mode 100644 index 0000000..660c4a2 --- /dev/null +++ b/CollectData/2.自动识别初体验.md @@ -0,0 +1,194 @@ +# 2.自动识别初体验 + +> 本节课程所涉及到的问题均为Datawhale读者所遇到的实际问题,将八爪鱼的操作知识点融合在实际问题中,本节中的方案均为作者整理和思考后的原创方案,在学习输出成笔记的过程中请附带参考课程链接,感谢你对原创工作的支持! + +完成了前面的课程学习,我们已经成功的安装了八爪鱼软件以及体验了简单的数据采集过程,在采集过程中我们使用了智能识别,在本节我们会根据实际的案例来学习八爪鱼操作中的其它自定义部分。 + +本节的知识点是如何使用八爪鱼的智能识别功能,并完成登陆、翻页等爬虫任务需求。其中带*为选学部分。 + +- [2.自动识别初体验](#2自动识别初体验) + - [2.1微博数据抓取(登陆Cookie设置)](#21微博数据抓取登陆cookie设置) + - [2.2豆瓣图书数据抓取(翻页与循环)](#22豆瓣图书数据抓取翻页与循环) + - [2.3采集流程逻辑*](#23采集流程逻辑) + - [2.4练习与思考](#24练习与思考) + +## 2.1微博数据抓取(登陆Cookie设置) + +你是Datawhale的一个读者,在Datawhale的公众号上看到了相关文章[《我用“觉醒年代”做数据分析》](https://mp.weixin.qq.com/s/f_euOxrMKEh5Db2ixVhTjw),在文章中使用了爬虫爬取了微博关键词下的相关信息,你也想爬取微博的相关数据,那么如何用八爪鱼来操作呢? + +我们打开八爪鱼范围微博的官网https://www.weibo.com/ + +![微博](./img/19.png) + +通过观察发现,想要搜索微博的相关信息需要先登陆微博的账号,我们先进入到浏览模式进行账号的登陆。 + +![浏览模式](./img/3.gif) + +进入到浏览模式后,就是不会进行相关的采集工作,会像正常浏览器浏览数据一样,点击右上角的登陆进入到微博的账号登陆界面 + +![微博登陆](./img/21.png) + +登陆完成后我们就进入到了全新的微博界面 + +![new_weibo](./img/22.png) + +想一下如果每次数据抓取都需要登陆岂不是相当的麻烦,能不能让页面保持这个登陆状态呢? + +我们需要了解一下Cookie + +Cookie是某些网站为了辨别用户身份在用户本地终端上的数据(通常经过加密),由用户计算机暂时或永久保存的信息。 + +也就是如果我们能在打开网页时使用指定的Cookie,这样网页就能辨别我们的身份,从而避免了每次登陆网站需要登陆的问题,那么如何设置呢? + +找到左边的流程图,设置打开网页的信息,设置设置使用指定的Cookie就可以了 + +![设置Cookie](./img/4.gif) + +Cookie设置完成以后,退出浏览模型进入到数据爬取规则设置阶段 + +点击微博的搜索按钮,会出现智能提示,按照智能提示进行相关操作 + +![key word](./img/5.gif) + +通过关键词的输入以及点击,我们进入到了觉醒年代话题下的相关微博,使用**自动识别**网页功能对网页进行识别 + +识别完成后,默认采集了14个字段 + +![weibo auto](./img/23.png) + +如果字段不全部是我们想要的,可以将不需要的字段删除掉 + +![删除字段](./img/6.gif) + +字段设置完成以后,点击生成采集设置,就可以对微博的数据进行爬取了 + +![开始采集](./img/24.png) + +对于部分笔记本电脑,会出现采集卡顿的情况,可以在采集的过程中将采集的数据隐藏掉,可以提升采集的速度。 + +最后将任务修改名称后保存,可以在我的任务中找到设置的相应任务。 + +![保存](./img/7.gif) + +## 2.2豆瓣图书数据抓取(翻页与循环) + +你是某高校的学生,你需要爬取豆瓣图书的相关信息进行做数据统计分析,需要知道每本书评价人数是多少,每个等级评价比例是多少 + +豆瓣图书的网址:https://book.douban.com/tag/%E5%B0%8F%E8%AF%B4 + +首先是登陆八爪鱼,进入到豆瓣的采集页面 + +![豆瓣](./img/25.png) + +使用自动识别网页的功能对豆瓣的数据进行采集 + +![豆瓣](./img/26.png) + +我们发现自动采集没办法满足我们数据采集的相关需求,我们需要对豆瓣的每个链接点击进入,然后去采集打分的人数以及比例,比如小说《活着》,有607608个人评价,同时我们需要采集不同星的比例,那么如果操作呢? + +![小说](./img/27.png) + +聪明的你看到这里你有2个思路 + +第一个是先采集各个书的链接,然后再依次打开各个书的链接进行数据采集 + +第二个是打开豆瓣的网站,然后点击第一个链接进入采集数据,然后返回到链接列表然后采集第二个链接 + +这里我们选择了第一个思路 + +**第一步就是采集各个图书的链接** + +我们使用八爪鱼的自动识别功能对豆瓣网页进行识别 + +通过前面的测试我们看到自动识别采集了11个字段,而我们只要书的名称以及链接这个2个字段,其它的都删除。 + +可以不删除嘛?也是可以的,不过需要注意的是,采集的字段越多,采集的速度越慢,对于我们不需要的字段可以删除从而提升采集的速度,因此将不需要的字段删除 + +![字段设置](./img/28.png) + +点击生成采集设置,点击保存并开始采集,点击启动本地采集。 + +![采集设置](./img/29.png) + +接下来就是漫长的采集等待... + +实际的测试速度是25条/分钟,虽然这个速度对于无界面爬虫来说不算快,但是比手动快很多了 + +![表情包](./img/emoji1.png) + +经过漫长的采集(一个午觉的时间)终于采集完成了... + +我们看看采集的数据 + +![数据](./img/30.png) + +**第二步就是循环打开各个网页采集相关信息** + +将前面采集的网页导入到八爪鱼中,如果数量超过了1万条可以分批导入 + +![自定义](./img/8.gif) + +对网页的数据进行采集 + +![设置](./img/9.gif) + +点击采集开始对最终数据进行抓取 + +![tu](./img/31.png) + +## 2.3采集流程逻辑* + +**八爪鱼的工作原理** + +模拟人的行为,通过内置Chrome浏览器浏览网页数据,所以采集数据的第一步永远是找到目标网址并输入。这跟通过普通浏览器访问网页完全一样。在普通浏览器中需要点击链接进入详情、点击翻页按钮查看更多数据,在八爪鱼中也需如此操作。 + +**八爪鱼的流程逻辑** + +八爪鱼通过【采集流程】全自动采集数据。【采集流程】执行逻辑遵循2个原则:**先从上至下、再由内而外** + +【采集流程】由【蓝色步骤】和【灰色框】两大部分组成。【蓝色步骤】是会执行的步骤,八爪鱼与网页发生互动。【灰色框】起记录网页的作用。 + +![流程图](./img/32.png) + +相关案例: + +案例1 + +![流程图](./img/33.png) + +案例2 + +![流程图](./img/34.png) + +案例3 + +![流程图](./img/35.png) + +## 2.4练习与思考 + +前面的操作步骤你学会了吗? + +如果还不是很清楚那就上手试一试吧,完成微博与豆瓣图书的数据采集,并将数据导出为excel形式 + +思考部分 + +1.抓取的微博数据算不算是个人隐私数据,如果是在使用中需要注意什么? + +2.设置Cookie登陆的优势是什么?Cookie在平时手机和电脑使用中体现在哪些方面? + +3.豆瓣图书数据采集中选择第一个思路的优势是什么?选择第二个思路的优势是什么? + +参考链接:https://www.bazhuayu.com/tutorial8/81xsrm9 + +**Task2 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) + diff --git a/CollectData/3.自定义数据采集.md b/CollectData/3.自定义数据采集.md new file mode 100644 index 0000000..fd0ccff --- /dev/null +++ b/CollectData/3.自定义数据采集.md @@ -0,0 +1,215 @@ +# 3.自定义数据采集 + +> 本节课程所涉及到的问题均为作者经过思考后将八爪鱼的操作知识点融合在实际问题中,在学习输出成笔记的过程中请附带参考课程链接,感谢你对原创工作的支持! + +完成了前面的课程学习,我们已经成功的安装了八爪鱼软件以及体验了简单的数据采集过程,但是在实际的数据采集中我们还是会遇到一些采集难度比较大的数据,因此本节对八爪鱼的特殊数据采集进行介绍。其中带*为选学部分。 + +- [3.自定义数据采集](#3自定义数据采集) + - [3.1京东关键词循环与特殊字段](#31京东关键词循环与特殊字段) + - [3.2豆瓣数据格式化](#32豆瓣数据格式化) + - [3.3正则表达式*](#33正则表达式) + - [3.4练习与思考](#34练习与思考) + +## 3.1京东关键词循环与特殊字段 + +你是某电商平台的运营,你需要对京东部分商品的数据进行竞品相关数据分析,分析的商品有多个,在学习了前面的课程后你能完成对单个关键词的数据采集,但是多个关键词循环采集好像不会,那么如何完成多个关键词任务采集呢? + +京东链接:https://www.jd.com + +进入八爪鱼打开京东的链接,找到流程图在【打开网页的下方】点击+号,增加文本循环,将提取准备好的关键词输入到循环列表中。 + +![设置](./img/10.gif) + +设置完循环后就要设置对网页的访问与相应的数据采集 + +![设置](./img/11.gif) + +当然在设置的过程中我们也遇到了京东要求登陆的情况,按照第二节所学习的Cookie设置完成相应的页面登录设置。 + +到这里我们的循环搜索关键词就设置好了,剩下的就是采集需要的数据或者使用自动识别网页对网页数据进行采集。 + +在这里有读者可能就问题,有一些特殊数据我需要采集页面的相关信息,比如页面的标题啊,这些没办法采集啊 + +当然这也是能够解决的 + +![设置](./img/12.gif) + +## 3.2豆瓣数据格式化 + +在实际的采集过程中,我们需要对数据进行适当格式化的过程,因此本节内容主要讲述使用八爪鱼对采集的数据进行格式化。(本节内容来源于八爪鱼官方教程) + +在第2节中我们采集了豆瓣图书的相关信息 + +![](./img/13.gif) + +采集中我们发现其中的作者,出版社等信息都混合到了一起,如果我们只想要其中的一部分怎么办? + +字段提取完成以后,鼠标移动到目标字段上,然后点击 【...】按钮,选择【格式化数据】,就会进入【格式化数据】配置页面。 + +![](./img/14.gif) + +原始值:原始字段 + +结果:经过格式化步骤后,输出的字段结果 + +添加步骤:提供8个数据格式化选项:替换、正则表达式替换、正则表达式匹配、去除空格、添加前缀、添加后缀、日期时间格式化、Html。 + +以下将配合具体案例,详解这8个选项如何使用 + +**1.替换** + +将字段中的部分或全部内容替换为其他内容,支持文字、数字、符号、空格、换行符的替换 + +例如:如果我们想将字段【436665人评价】中的文本【人评价】去掉,只留下数字【43665】。 + +具体步骤为: + +![](./img/15.gif) + +**2、正则表达式替换** + +用正则表达式将字段中的部分或全部内容找出来,然后将其替换为其他内容,支持文字、数字、符号、空格、换行符的替换。相比简单的【替换】,【正则表达式替换】更为强大灵活。 + +在提取书籍信息时,我们发现采集到的数据中有很多空格,我们想将空格去除掉 + +【正则表达式】:\s+(这条正则表达式的意思是,找到字段中所有的空格) + +![](./img/16.gif) + +**3、正则表达式匹配** + +用正则表达式将字段中的部分或全部内容提取出来 + +实例:在采集数据中,我们只需要作者这一行的信息 + +先使用正则表达式替换,将空格全部替换为空 + +再使用正则表达式匹配将作者的相关信息提取出来 + +![](./img/17.gif) + +**4、去除空格** + +包括三种,分别是【去除开头空格】、【去除结尾空格】、【去除两头空格】 + +![](./img/18.gif) + +**5、添加前缀** + +怎么理解增加前缀,就是在采集的字段前增加相关信息 + +![](./img/36.png) + +**6、添加后缀** + +怎么理解增加前缀,就是在采集的字段后增加相关信息 + +![](./img/37.png) + +**7、日期时间格式化** + +选中时间字段,选择【日期时间格式化】,将日期转化成需要的格式或者仅提取日期时间中的某一部分。 + +![](./img/19.gif) + +**8、Html转码** + +html页面中会有html带有的特殊相关的标记,需要将这些特殊的标记进行转换,比如gt;转化为>,nbsp;转化为空格等等,当然这种也能用替换来解决。 + +## 3.3正则表达式* + +**1、正则表达式简介** + +正则表达式是对字符串(包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为“元字符”))操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个【规则字符串】,这个【规则字符串】用来表达对字符串的一种过滤逻辑。正则表达式是一种文本模式,该模式描述在搜索文本时要匹配的一个或多个字符串。 + +**2、正则表达式的用途** + +字符串匹配(字符匹配) + +字符串查找 + +字符串替换 + +**3、常用元字符及描述** + +\d 匹配一个数字字符。等价于[0-9] + +\D 匹配一个非数字字符。等价于[^0-9] + +\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。 + +\S 匹配任何非空白字符。 + +\w 匹配构成单词的字符(字母、数字、下划线)。等价于[A-Za-z0-9_] + +\W 匹配非构成单词的字符。等价于[^A-Za-z0-9_] + +\p{Lower} 英文的小写字母 + +. 任意一个字符 + +X* 任意次数 + +X+ 一次或多次 + +X? 最多一次 + +X{n} 正好n次 + +X{n,} 最少n次,上不封顶 + +X{n,m} 最少n次,最多m次 + +[] 表示一个范围 + +[a-z]|[A-Z] [a-zA-Z] [a-z[A-Z]] a到z 或A到Z + +[A-Z&&[RFG]] A到Z并且RFG (交集的意思) + +“” 正则 “a?” 零宽度匹配,出现零次 + +**边界匹配** + +^开头和$结尾 + +^h.* .*ir$ ^h[a-z]{1,3}\b + +\b 一个单词的边界,空格、换行…… + +^[\s&&[^\n]]*\n$ 空白行,开头是空白字符但不是换行符,出现0次或多次,且紧跟着是结束的换行符 + + 常用的正则表达式:https://www.cnblogs.com/hsinfo/p/13584432.html + +当你对你写的正则表达式不确定时,可以使用正则表达在线测试,以确定正则表达式正确 + +正则表达式测试:https://c.runoob.com/front-end/854 + +## 3.4练习与思考 + +前面的操作步骤你学会了吗? + +如果还不是很清楚那就上手试一试吧,完成京东与豆瓣图书的数据采集,并将数据导出为excel形式 + +思考部分 + +1.在数据采集过程中,数据格式化作用是什么?为什么要进行数据格式化? + +2.除了在数据采集中,正则表达式能用在学习和生活中的哪些方面? + +参考链接: + +https://www.bazhuayu.com/tutorial8/81srgjc + +https://www.bazhuayu.com/tutorial8/81gshsj + +**Task3 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) \ No newline at end of file diff --git a/CollectData/4.综合实践-boss直聘信息采集.md b/CollectData/4.综合实践-boss直聘信息采集.md new file mode 100644 index 0000000..bb3633c --- /dev/null +++ b/CollectData/4.综合实践-boss直聘信息采集.md @@ -0,0 +1,76 @@ +# 4.综合实践 + +> 本节课程所涉及到的问题均为Datawhale读者所遇到的实际问题,将八爪鱼的操作知识点融合在实际问题中,本节中的方案均为作者整理和思考后的原创方案,在学习输出成笔记的过程中请附带参考课程链接,感谢你对原创工作的支持! + +学习完前面的课程后,已经初步掌握了使用八爪鱼进行数据采集的相关流程,是时候来检验一下学习成果了。 + +在设计本节课程的内容中也是经历了漫长的思考与讨论,后来我们注意到爬虫技能是低频但是紧急的技能,在需要的时候能顺利完成数据采集即可 + +我们课程的核心是无代码进行数据采集,能在日常的学习和使用中进行相关的数据采集,提升学习者的工作自动化能力,从而提升工作效率。 + +因此我们课程经过不断的讨论后,最后选择了2个相对简单的数据采集的项目,希望学习者能在项目中掌握基本的数据采集能力。 + +同时综合实践的项目不做详细的介绍,只提供相关的操作思路,让学习者自己完成相关的实践过程,如果在学习过程中遇到了相关的问题可以在学习群中与助教进行讨论。 + +## 4.1综合实践背景 + +小张是某高校管理学研究生,在毕业课题中需要采集boss直聘武汉地区的相关数据,而小张同学因为人文科学出生没有接触过爬虫代码,在网上搜索很多资料后无果,现在她找到你希望你帮她采集大众点评网的相关数据,你应该怎么做呢? + +boss直聘武汉地区网站:https://www.zhipin.com/wuhan/ + +## 4.2综合实践操作 + +首先打开八爪鱼进入到打开boss直聘武汉的相关页面 + +![](./img/38.png) + +在职务关键词中输入【数据分析】关键词进行搜索 + +![](./img/39.png) + +首先是对页面进行自动网页识别 + +![](./img/40.png) + +自动识别完成后可以看到系统抓取的数据比较全面 + +![](./img/41.png) + +如果需要获得更加详细的职位页面数据,进行相关数据采集完成后可以进入到单独的职位页面进行数据采集 + +采集完成后 将采集的职位的链接导入到八爪鱼后 + +对后续的职位信息进行相关采集 + +![](./img/42.png) + +循环打开采集的网页,对职位的岗位需求进行采集 + +针对Boss直聘对ip进行验证的情况,可以对打开网页的重试部分进行设置,从而在一定程度上对反爬虫的绕过 + +![](./img/43.png) + +## 4.3练习与思考 + +前面的操作步骤你学会了吗? + +如果还不是很清楚那就上手试一试吧,完成boss直聘的数据采集,并将数据导出为excel形式 + +思考部分 + +1.在数据采集过程中,频繁访问网页会引发反爬虫机制,如何规避这样的问题? + +2.对于boss直聘的数据采集中,你觉得哪些信息段是比较重要的? + +**Task4 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) + diff --git a/CollectData/5.综合实践-微博个人信息采集.md b/CollectData/5.综合实践-微博个人信息采集.md new file mode 100644 index 0000000..af1ec6e --- /dev/null +++ b/CollectData/5.综合实践-微博个人信息采集.md @@ -0,0 +1,125 @@ +# 5.综合实践 + +> 本节课程所涉及到的问题均为Datawhale读者所遇到的实际问题,将八爪鱼的操作知识点融合在实际问题中,本节中的方案均为作者整理和思考后的原创方案,在学习输出成笔记的过程中请附带参考课程链接,感谢你对原创工作的支持! + +在完成了前面的boss直聘的数据抓取后,我们又根据了数据采集中所遇到的实际问题,增加了微博个人信息抓取的相关课程,其中课程中针对xpath数据提取的情况进行了详细的介绍,以期学习者能够在日常的学习和工作中能够实地使用。 + +## 5.1综合实践背景 + +小李是某高校的大二的学生,在学校的课程项目中需要采集微博某个主题广场上相关用户的信息,在Datawhale的公众号上看到了相关文章[《我用“觉醒年代”做数据分析》](https://mp.weixin.qq.com/s/f_euOxrMKEh5Db2ixVhTjw)后想了解个人用户信息是如何采集的。 + +基于这个问题,本项目就详细的介绍如何使用八爪鱼进行微博个人信息的采集。 + +## 5.2综合实践 + +通过第二节内容的学习,我们已经掌握了如何就微博某一话题下的相关信息采集 + +首先导入我们需要采集的相关个人链接 + +这里以我自己的微博账号为例子:https://weibo.com/u/6001346718 + +![](./img/44.png) + +### 5.2.1用户id + +通过观察我们发现用户的id就是网址中的一串数字,以我的账号为例,我的用户id号是6001346718 + +那么如何把这个数据采集下来呢? + +因此我们可以采集当前的网页地址 + +![](./img/45.png) + +那么如何提取用户的id数字呢? + +我们想到了正则表达式匹配,通过网络查询我们找到匹配数字的正则表达式为【[0-9]+】因此你完成了如下操作 + +![](./img/20.gif) + +### 5.2.2用户名称 + +点击用户名称,八爪鱼会提示相关的操作,选择采集文本 + +![](./img/46.png) + +### 5.2.3用户性别 + +用户性别采集相对比较困难,为什么呢? + +因为用户性别是一个图标,因此我们需要读取这个图标是什么东西 + +因此我们采用了这样的操作 + +![](./img/21.gif) + +通过上述操作后 我们采集了图标的outer html + +采集后我们发现采集的信息如下 + +``` + +``` + +通过观察我们发现 + +icon_pf_male代表男生,icon_pf_female代表女生 + +因此我们使用正则表达式匹配这个信息,使用的正则表达式为【(?<=class="W_icon)(.+?)(?=")】 + +这个正则表达式是什么意思呢? + +(?<=class="W_icon) 表示以class="W_icon这个开头 + +(.+?)表示中间的所有字符串 + +(?=") 表示以"结尾 + +匹配完成后我们发现生成的结果是icon_pf_male + +因此我们再增加替换,将icon_pf_male替换为男,将icon_pf_female替换为女 + +![](./img/47.png) + +### 5.2.4用户个人简介 + +采集方式与用户名称相似,点击用户个人简历,选择采集该文本 + +不过需要注意的是,因为有的用户没有写个人简介,因此我们采集不到该元素时,我们可以留空 + +![](./img/48.png) + +### 5.2.5用户关注、粉丝、微博数 + +采集方式与用户名称相似,点击用户个人简历,选择采集该文本 + +![](./img/49.png) + +### 5.2.5用户地理位置、毕业学校、生日 + +采集方式与用户名称相似,点击用户个人简历,选择采集该文本 + +对于时间信息,八爪鱼也提供了相关的时间格式化方式 + +![](./img/22.gif) + +## 5.3练习与思考 + +前面的操作步骤你学会了吗? + +如果还不是很清楚那就上手试一试吧,完成微博个人信息数据采集,并将数据导出为excel形式 + +思考部分 + +1.对于微博个人信息数据的采集,这部分数据是属于个人隐私数据嘛?如果是,在使用中应该做怎样的操作?如果不是,请说明理由。 + +**Task5 END.** + +--- By: 牧小熊 + +> 华中农业大学研究生,Datawhale成员, Datawhale优秀原创作者 +> +> 知乎:https://www.zhihu.com/people/muxiaoxiong + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结,详情可关注Datawhale: + +[![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572)](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) \ No newline at end of file diff --git a/CollectData/img/1.gif b/CollectData/img/1.gif new file mode 100644 index 0000000..8f362eb Binary files /dev/null and b/CollectData/img/1.gif differ diff --git a/CollectData/img/1.png b/CollectData/img/1.png new file mode 100644 index 0000000..3be171f Binary files /dev/null and b/CollectData/img/1.png differ diff --git a/CollectData/img/10.gif b/CollectData/img/10.gif new file mode 100644 index 0000000..8cb93b9 Binary files /dev/null and b/CollectData/img/10.gif differ diff --git a/CollectData/img/10.png b/CollectData/img/10.png new file mode 100644 index 0000000..ccb4da3 Binary files /dev/null and b/CollectData/img/10.png differ diff --git a/CollectData/img/11.gif b/CollectData/img/11.gif new file mode 100644 index 0000000..8b567e2 Binary files /dev/null and b/CollectData/img/11.gif differ diff --git a/CollectData/img/11.png b/CollectData/img/11.png new file mode 100644 index 0000000..c2fd4e4 Binary files /dev/null and b/CollectData/img/11.png differ diff --git a/CollectData/img/12.gif b/CollectData/img/12.gif new file mode 100644 index 0000000..6dae9ed Binary files /dev/null and b/CollectData/img/12.gif differ diff --git a/CollectData/img/12.png b/CollectData/img/12.png new file mode 100644 index 0000000..66873a9 Binary files /dev/null and b/CollectData/img/12.png differ diff --git a/CollectData/img/13.gif b/CollectData/img/13.gif new file mode 100644 index 0000000..e321389 Binary files /dev/null and b/CollectData/img/13.gif differ diff --git a/CollectData/img/13.png b/CollectData/img/13.png new file mode 100644 index 0000000..5e078bc Binary files /dev/null and b/CollectData/img/13.png differ diff --git a/CollectData/img/14.gif b/CollectData/img/14.gif new file mode 100644 index 0000000..d0d0a41 Binary files /dev/null and b/CollectData/img/14.gif differ diff --git a/CollectData/img/14.png b/CollectData/img/14.png new file mode 100644 index 0000000..523a2ac Binary files /dev/null and b/CollectData/img/14.png differ diff --git a/CollectData/img/15.gif b/CollectData/img/15.gif new file mode 100644 index 0000000..df69bf9 Binary files /dev/null and b/CollectData/img/15.gif differ diff --git a/CollectData/img/15.png b/CollectData/img/15.png new file mode 100644 index 0000000..4b2f921 Binary files /dev/null and b/CollectData/img/15.png differ diff --git a/CollectData/img/16.gif b/CollectData/img/16.gif new file mode 100644 index 0000000..46a019a Binary files /dev/null and b/CollectData/img/16.gif differ diff --git a/CollectData/img/16.png b/CollectData/img/16.png new file mode 100644 index 0000000..9e52a77 Binary files /dev/null and b/CollectData/img/16.png differ diff --git a/CollectData/img/17.gif b/CollectData/img/17.gif new file mode 100644 index 0000000..07183b3 Binary files /dev/null and b/CollectData/img/17.gif differ diff --git a/CollectData/img/17.png b/CollectData/img/17.png new file mode 100644 index 0000000..9a85a84 Binary files /dev/null and b/CollectData/img/17.png differ diff --git a/CollectData/img/18.gif b/CollectData/img/18.gif new file mode 100644 index 0000000..a26dc8c Binary files /dev/null and b/CollectData/img/18.gif differ diff --git a/CollectData/img/18.png b/CollectData/img/18.png new file mode 100644 index 0000000..893a244 Binary files /dev/null and b/CollectData/img/18.png differ diff --git a/CollectData/img/19.gif b/CollectData/img/19.gif new file mode 100644 index 0000000..5e11931 Binary files /dev/null and b/CollectData/img/19.gif differ diff --git a/CollectData/img/19.png b/CollectData/img/19.png new file mode 100644 index 0000000..7e5c5dd Binary files /dev/null and b/CollectData/img/19.png differ diff --git a/CollectData/img/2.gif b/CollectData/img/2.gif new file mode 100644 index 0000000..a60bc62 Binary files /dev/null and b/CollectData/img/2.gif differ diff --git a/CollectData/img/2.png b/CollectData/img/2.png new file mode 100644 index 0000000..98be8d9 Binary files /dev/null and b/CollectData/img/2.png differ diff --git a/CollectData/img/20.gif b/CollectData/img/20.gif new file mode 100644 index 0000000..4806b42 Binary files /dev/null and b/CollectData/img/20.gif differ diff --git a/CollectData/img/20.png b/CollectData/img/20.png new file mode 100644 index 0000000..5685cfa Binary files /dev/null and b/CollectData/img/20.png differ diff --git a/CollectData/img/21.gif b/CollectData/img/21.gif new file mode 100644 index 0000000..f72962d Binary files /dev/null and b/CollectData/img/21.gif differ diff --git a/CollectData/img/21.png b/CollectData/img/21.png new file mode 100644 index 0000000..ae0b684 Binary files /dev/null and b/CollectData/img/21.png differ diff --git a/CollectData/img/22.gif b/CollectData/img/22.gif new file mode 100644 index 0000000..126704f Binary files /dev/null and b/CollectData/img/22.gif differ diff --git a/CollectData/img/22.png b/CollectData/img/22.png new file mode 100644 index 0000000..9bd3ea7 Binary files /dev/null and b/CollectData/img/22.png differ diff --git a/CollectData/img/23.png b/CollectData/img/23.png new file mode 100644 index 0000000..edcd951 Binary files /dev/null and b/CollectData/img/23.png differ diff --git a/CollectData/img/24.png b/CollectData/img/24.png new file mode 100644 index 0000000..5f244b5 Binary files /dev/null and b/CollectData/img/24.png differ diff --git a/CollectData/img/25.png b/CollectData/img/25.png new file mode 100644 index 0000000..4185923 Binary files /dev/null and b/CollectData/img/25.png differ diff --git a/CollectData/img/26.png b/CollectData/img/26.png new file mode 100644 index 0000000..d24b4c5 Binary files /dev/null and b/CollectData/img/26.png differ diff --git a/CollectData/img/27.png b/CollectData/img/27.png new file mode 100644 index 0000000..711dea7 Binary files /dev/null and b/CollectData/img/27.png differ diff --git a/CollectData/img/28.png b/CollectData/img/28.png new file mode 100644 index 0000000..f828c52 Binary files /dev/null and b/CollectData/img/28.png differ diff --git a/CollectData/img/29.png b/CollectData/img/29.png new file mode 100644 index 0000000..c11d302 Binary files /dev/null and b/CollectData/img/29.png differ diff --git a/CollectData/img/3.gif b/CollectData/img/3.gif new file mode 100644 index 0000000..f42bd09 Binary files /dev/null and b/CollectData/img/3.gif differ diff --git a/CollectData/img/3.png b/CollectData/img/3.png new file mode 100644 index 0000000..eed1310 Binary files /dev/null and b/CollectData/img/3.png differ diff --git a/CollectData/img/30.png b/CollectData/img/30.png new file mode 100644 index 0000000..5186b78 Binary files /dev/null and b/CollectData/img/30.png differ diff --git a/CollectData/img/31.png b/CollectData/img/31.png new file mode 100644 index 0000000..7dff7be Binary files /dev/null and b/CollectData/img/31.png differ diff --git a/CollectData/img/32.png b/CollectData/img/32.png new file mode 100644 index 0000000..a76d8c7 Binary files /dev/null and b/CollectData/img/32.png differ diff --git a/CollectData/img/33.png b/CollectData/img/33.png new file mode 100644 index 0000000..7f53c00 Binary files /dev/null and b/CollectData/img/33.png differ diff --git a/CollectData/img/34.png b/CollectData/img/34.png new file mode 100644 index 0000000..7418efa Binary files /dev/null and b/CollectData/img/34.png differ diff --git a/CollectData/img/35.png b/CollectData/img/35.png new file mode 100644 index 0000000..cd92717 Binary files /dev/null and b/CollectData/img/35.png differ diff --git a/CollectData/img/36.png b/CollectData/img/36.png new file mode 100644 index 0000000..7f25555 Binary files /dev/null and b/CollectData/img/36.png differ diff --git a/CollectData/img/37.png b/CollectData/img/37.png new file mode 100644 index 0000000..f782c46 Binary files /dev/null and b/CollectData/img/37.png differ diff --git a/CollectData/img/38.png b/CollectData/img/38.png new file mode 100644 index 0000000..b814ee0 Binary files /dev/null and b/CollectData/img/38.png differ diff --git a/CollectData/img/39.png b/CollectData/img/39.png new file mode 100644 index 0000000..f539b2d Binary files /dev/null and b/CollectData/img/39.png differ diff --git a/CollectData/img/4.gif b/CollectData/img/4.gif new file mode 100644 index 0000000..8d258c6 Binary files /dev/null and b/CollectData/img/4.gif differ diff --git a/CollectData/img/4.png b/CollectData/img/4.png new file mode 100644 index 0000000..d7e32ec Binary files /dev/null and b/CollectData/img/4.png differ diff --git a/CollectData/img/40.png b/CollectData/img/40.png new file mode 100644 index 0000000..0971612 Binary files /dev/null and b/CollectData/img/40.png differ diff --git a/CollectData/img/41.png b/CollectData/img/41.png new file mode 100644 index 0000000..3f1a394 Binary files /dev/null and b/CollectData/img/41.png differ diff --git a/CollectData/img/42.png b/CollectData/img/42.png new file mode 100644 index 0000000..067c0cd Binary files /dev/null and b/CollectData/img/42.png differ diff --git a/CollectData/img/43.png b/CollectData/img/43.png new file mode 100644 index 0000000..1056137 Binary files /dev/null and b/CollectData/img/43.png differ diff --git a/CollectData/img/44.png b/CollectData/img/44.png new file mode 100644 index 0000000..0addb06 Binary files /dev/null and b/CollectData/img/44.png differ diff --git a/CollectData/img/45.png b/CollectData/img/45.png new file mode 100644 index 0000000..1280c87 Binary files /dev/null and b/CollectData/img/45.png differ diff --git a/CollectData/img/46.png b/CollectData/img/46.png new file mode 100644 index 0000000..af65c06 Binary files /dev/null and b/CollectData/img/46.png differ diff --git a/CollectData/img/47.png b/CollectData/img/47.png new file mode 100644 index 0000000..b66a8d6 Binary files /dev/null and b/CollectData/img/47.png differ diff --git a/CollectData/img/48.png b/CollectData/img/48.png new file mode 100644 index 0000000..2ca115f Binary files /dev/null and b/CollectData/img/48.png differ diff --git a/CollectData/img/49.png b/CollectData/img/49.png new file mode 100644 index 0000000..1e1ee33 Binary files /dev/null and b/CollectData/img/49.png differ diff --git a/CollectData/img/5.gif b/CollectData/img/5.gif new file mode 100644 index 0000000..ca48907 Binary files /dev/null and b/CollectData/img/5.gif differ diff --git a/CollectData/img/5.png b/CollectData/img/5.png new file mode 100644 index 0000000..6f3d54f Binary files /dev/null and b/CollectData/img/5.png differ diff --git a/CollectData/img/6.gif b/CollectData/img/6.gif new file mode 100644 index 0000000..9264bb7 Binary files /dev/null and b/CollectData/img/6.gif differ diff --git a/CollectData/img/6.png b/CollectData/img/6.png new file mode 100644 index 0000000..44df4ed Binary files /dev/null and b/CollectData/img/6.png differ diff --git a/CollectData/img/7.gif b/CollectData/img/7.gif new file mode 100644 index 0000000..450e50b Binary files /dev/null and b/CollectData/img/7.gif differ diff --git a/CollectData/img/7.png b/CollectData/img/7.png new file mode 100644 index 0000000..7244c1b Binary files /dev/null and b/CollectData/img/7.png differ diff --git a/CollectData/img/8.gif b/CollectData/img/8.gif new file mode 100644 index 0000000..d4c9e18 Binary files /dev/null and b/CollectData/img/8.gif differ diff --git a/CollectData/img/8.png b/CollectData/img/8.png new file mode 100644 index 0000000..1d5551b Binary files /dev/null and b/CollectData/img/8.png differ diff --git a/CollectData/img/9.gif b/CollectData/img/9.gif new file mode 100644 index 0000000..82a7b96 Binary files /dev/null and b/CollectData/img/9.gif differ diff --git a/CollectData/img/9.png b/CollectData/img/9.png new file mode 100644 index 0000000..bfad6f5 Binary files /dev/null and b/CollectData/img/9.png differ diff --git a/CollectData/img/emoji1.png b/CollectData/img/emoji1.png new file mode 100644 index 0000000..7aba051 Binary files /dev/null and b/CollectData/img/emoji1.png differ diff --git a/CollectData/img/logo.png b/CollectData/img/logo.png new file mode 100644 index 0000000..e6bde3b Binary files /dev/null and b/CollectData/img/logo.png differ diff --git a/CollectData/readme.md b/CollectData/readme.md index ff7a108..445f492 100644 --- a/CollectData/readme.md +++ b/CollectData/readme.md @@ -1,2 +1,58 @@ -# 数据采集从入门到精通 - +# 课程简介 + +**课程设计成员**:**牧小熊** + +**课程背景**:随着数字化的不断推进,数据采集在数据分析的任务中占据了一定的重要性。Python爬虫作为数据采集的代表方向在这段时间不断发展,但是我们也注意到,爬虫对于数据从业者来说是一个低频但紧急的需求。 + +因此,基于这个需求,我们推出了我们的全新课程《数据采集从入门到精通》,基于八爪鱼数据采集器对数据采集过程的封装,通过对数据采集任务的可视化,从而降低爬虫的门槛,提升数据从业者的工作效率。 + +本课程的核心亮点是数据采集的简单化、可视化以及无代码化,通过将数据采集的相关操作融入到实际的数据采集项目中,以实践学习入手理论知识从而增强学习者对数据采集学习的信心与学习热情。 + +我们在课程中设置了选学部分,也介绍了爬虫中的一些概念以及涉及到的相关法律知识,整体课程设计系统,学习难度具有一定的梯度,因此可以满足不同人群对课程的需求,希望在完成本次课程的学习后,能将数据采集应用到学习和工作中。 + +**课程基本信息** + +- 学习周期:14天,每天平均花费时间1小时-3小时不等,根据个人学习接受能力强弱有所浮动。 +- 学习形式:理论学习 + 练习 +- 人群定位:对数据采集有需求的同学 +- 难度系数:⭐ + +# 课程大纲 + +课程中带有*标识的为选学课程 + +**Task00:熟悉规则与课程背景(1天)** + +- 组队、修改群昵称。 +- 熟悉打卡规则。 +- 学习课程的相关背景 + +**Task01 认识八爪鱼 (2天)** + +- 八爪鱼界面认识 +- 八爪鱼快速上手 +- 相关数据导出 + +**Task02 自动识别初体验 (3天)** + +- 微博数据抓取 +- 豆瓣图书输出抓取 +- 采集逻辑与流程* + +**Task03 自定义数据采集 (3天)** + +- 京东关键词抓取 +- 豆瓣图书数据格式化 +- 正则表达式* + +**Task04 综合实践-boss直聘信息采集(2天)** + +- boss直聘职位数据抓取 + +**Task05 综合实践-微博个人信息采集(3天)** + +- 微博个人信息数据抓取 + +关于Datawhale: Datawhale是一个专注于数据科学与AI领域的开源组织,汇集了众多领域院校和知名企业的优秀学习者,聚合了一群有开源精神和探索精神的团队成员。Datawhale 以“for the learner,和学习者一起成长”为愿景,鼓励真实地展现自我、开放包容、互信互助、敢于试错和勇于担当。同时 Datawhale 用开源的理念去探索开源内容、开源学习和开源方案,赋能人才培养,助力人才成长,建立起人与人,人与知识,人与企业和人与未来的联结。 本次数据挖掘路径学习,专题知识将在天池分享,详情可关注Datawhale: + +![logo.png](https://camo.githubusercontent.com/8578ee173c78b587d5058439bbd0b98fa39c173def229a8c3d957e62aac0b649/68747470733a2f2f696d672d626c6f672e6373646e696d672e636e2f323032303039313330313032323639382e706e67237069635f63656e746572) \ No newline at end of file