运营必备技能——网页数据抓取简易教程(Chrome + Web
许多朋友看过三节课的抓取数据课程,但有许多小的问题还存在疑问。作为其中一名学习者,今天在这里总结、分享下课程学习的内容。
课程里面称学完了就能百分之百抓取网页数据,这个说法有一定噱头的成分。认真学完课程可以做到抓取大部分的网页,并且抓取数据的数据和网页复杂程度有关,不是想抓取哪部分就能抓取哪部分数据的。通常抓取到的数据会存在冗余(抓取到自己不想要的数据),后期可以使用Excel进行数据处理。
继续往下翻之前,先看几个问题:
1、为什么要学习数据抓取?
2、通过什么方法抓取数据的?
3、怎么学习数据抓取,效率更高?
明白了这三个问题,才能有学习的目标、工具和方法。
1、为什么要学习数据抓取?
视频中介绍了好几个原因,每个人也有自己的原因。我认为最重要的是,数据的自给自足。
巧妇难为无米之炊,遇到问题,需要数据作分析,网络上又找不到相应的数据汇总,或者数据不是最新的。学会了数据爬取,想要什么数据自己爬取就行了,想分析哪些数据之间的关系,自己爬取一下。
2、是通过什么方法抓取数据的?
Google Chrome + Web Scraper
3、怎么学习数据抓取,效率更高?
最简单的方法就是边看边操作。
目录:
单页单元素抓取(2017年6月25日 更新)
多页多元素抓取(2017年6月25日 更新)
抓取二级页面内容(2017年6月25日 更新)
爬虫课常见问题集(2017年6月26日 更新)
下面是正文:
本文会按照以下步骤介绍网页数据抓取,首先是抓取前的准备,包括软件准备和抓取目标的准备;其次,介绍几种简单常用的抓取方法;最后最一些补充和说明,有问题可以在文末留言,或者加我微信交流:zhangshi0527 。我也在学习摸索数据爬取,本文会随着我接触的内容不断更新。
一、爬取前的准备
1、软件准备
网页抓取需要用到的工具是:Google Chrome + Web Scraper
可以科学上网的朋友
直接到Google网站上搜索下载安装Google Chrome;安装完成后,进入“Chrome 网上应用店”,搜索“Web Scraper” ,安装。
只能访问国内网站的朋友
可以到这里下载Chrome 离线下载,安装完成之后,点击这里下载 Web Scraper (密码: 35de)
2、抓取目标准备
1、抓取之前,需要先确定抓取数据的目的,这样才不至于不知道抓取什么数据,抓取下来有什么用?
2、确定抓取目的之后,就开始寻找可以提供相关数据的网页,然后再确定需要抓取的网页上哪些元素。
上面步骤做好之后,我们就可以开始抓取数据啦。
二、网页数据抓取的方法
单页单元素抓取
示例目标:抓取淘宝搜索结果页的商品名称
1、进入淘宝网无线鼠标搜索结果页。
2、按快捷键“F12”,进入操作面板,点击 Web Scraper—— Create sitemap ,新建抓取程序。
3、分别填写 Sitemap name 和 Start URL ,Sitemap name 只能填写英文和数字,填写错误会有提示;Start URL 直接复制当前网页地址就可以。然后点击红框中的[Create sitemap]
4、出现此页面,点击红框中[Add new selector]
5、【id】填写需要抓取的元素名称(任意),【Type】选择[ Text ],然后点击【Select】,选择需要抓取的元素,连续选择两个,后面的就会自动匹配选中。再点击【Done Selecting】,并且选中【Multiple】,点击【Save Selector】保存。
6、保存后,点击红框中所示,可以预览抓取效果
7、根据图中红框所示,依次点击,最后点击【Start scraping】,即可抓取数据
8、抓取成功之后,按图中所示,点击,即可导出为CSV格式保存。
多页多元素抓取
抓取目标:前10页的商品名称、价格和店铺名称
1、重复单页单元素抓取前四个步骤
2、【Type】选择 Element ,选中Multiple。
2、点击【select】选择包含需要抓取元素的框架(包含商品名称、价格和店铺名称),和单页面单元素抓取一样,选中前两个,后面的就会自动选中。点击【Done selecting】确认,然后再点击【Save Selector】保存。
3、双击红框选中部分,进入刚才我们设置的复选框架1
4、重复单页面单元素4、5两部分的操作,稍有变动的就是只要在一个框里抓取相应元素就可以了,记住不选中Multiple
5、保存之后,再重复设置价格和店铺名称。
框架结构是这样的
6、下面再来设置抓取多页,在刚才设置的基础上,依次点击图中红框所示,进入抓取多页设置。
7、如图所示,淘宝搜索页的地址其他都不变,只有结尾是以44变动的(第一页是1,第二页是44,第三页是88)
8、我们现在抓取的是前十页,则设置为[1-396:44],意思是从1每次增加44,一直到396为止。点击【Save sitemap】保存
9、正常开始抓取操作就可以了
抓取二级页面内容
刚才有人问了下,怎么抓取二级页面,尝试了下,现在放在这里,后期更新可能会以案例的形式写出来。
抓取目标:知乎某人回答的问题和回答内容
1、以“韩梅梅”为例,(我也不知道这是谁,打开知乎就看到了)抓取页面点击这里,抓取内容为红框里的。第二幅图内容需要点击进入才可以看到全文。
2、老样子,选中包含问题文字和链接的部分
3、问题内容直接选择为【Text】,如图所示
4,、下一步就是抓取答案全部内容,这一步分为两块走,先设置一个【Link】,是问题链接,跳转到答案的
5、答案链接下面,在设置一个抓取【Text】的爬虫
6、然后执行抓取程序,抓取结果如下:
7、直接导出结果,使用Excel筛选就可以了,缺点是如果有图片,只能抓取图片地址,不能直接抓取图片。
组织框架图
2017年6月25日 更新
爬虫课常见问题集
摘录自:https://shimo.im/doc/0Ic2ULVXkoQnE3jN/
收录和回答大家群里提出的常见问题。
希望大家能看完课程再提问,还有一些问题百度一查就有,希望大家能善用百度和此文档~
准备工作:
谷歌chrome浏览器链接:http://rj.baidu.com/soft/detail/14744.html
MAC版:http://rj.baidu.com/soft/detail/25718.html
Web Scraper插件
可以翻墙的同学通过官方渠道http://chrome.google.com/webstore/detail/web-scraper/jnhgnonknehpejjnehehllkliplmbmhn
无法翻墙同学通过链接http://chrome-extension-downloader.com/?extension=jnhgnonknehpejjnehehllkliplmbmhn#打开链接(可能要刷新几次),点击 Download extension可以下载一个crx文件
或百度网盘链接:http://pan.baidu.com/s/1pKUvbyN密码:idqg
无法翻墙的同学在下载插件后需要手动安装插件:【怎么安装Chrome插件】安装Chrome第三方插件_百度经验
谷歌浏览器无法打开网页(修改默认搜索引擎为百度)
修改默认搜索引擎为百度http://jingyan.baidu.com/article/59703552cf589c8fc00740e1.html
第二课
Mac电脑的excel里“自网站”没有弹窗,只有打开文件啊?
跳过直接看第三课吧(更好更强大),喜欢折腾的小伙伴可以研究一下这些链接:
1)https://www.youtube.com/watch?v=iMO4Shnj1kI
WPS行不行?不行
Excel要什么版本?感谢田喆(群名昵称Wanderlust),经验证:版本2007-2016都可以
【B站弹幕】搜索了XML文件 ,但是没有找到弹幕文件
因为有缓存文件,且在缓存加载后再打开的控制台,所以就没被控制台捕捉到
需要 Ctrl+F5 强制刷新网页(或点击 Disable cache后普通刷新)
【B站弹幕】Adobe Player不是最新版,每次都要点击“运行一次”
想要一劳永与的话安装adobe player for chromehttp://www.pc6.com/softview/SoftView_149826.html
课后作业,没有XML架构?点击“是”就行
课后作业,有一堆弹窗?大胆点下去!(大概有十个)
第三课
神秘代码不能复制?来吧~
{"_id":"test","startUrl":"https://www.zhihu.com/people/chen-da-xin-84/followers?page=2","selectors":[{"parentSelectors":["_root"],"type":"SelectorText","multiple":true,"id":"Username","selector":"div.UserItem-title a.UserLink-link","regex":"","delay":"500"}]}
360浏览器不能下载CSV?乖,用chrome浏览器吧
导出的Excel乱码?
用记事本打开,转为ANSI格式,详见http://jingyan.baidu.com/article/ac6a9a5e4c681b2b653eacf1.html
为什么老黄的答案有129条,我却抓不全,只有90-10X条?
没有设置好delay。很多网站的数据是动态加载的,所以有时候爬虫爬过了,数据还没生成。具体的解决方案可以空降第三课最后一节「视频答疑」的 “3分10秒”处
为什么爬下来的结果是乱序?
第五课第二节【爬虫常见疑问】告诉你,空降时间“3分20秒”处
为什么三节课的微信推文只抓下来100条/101条
没有登录的情况下只能抓10页,可以登录后再抓,注意延长requet interval到8000ms以上,否则容易被搜狗的反爬虫机制识别
第四课
关于元素集漏选了元素(导致子选择器抓不到)
点击一条数据,enable key后多按几次P,直到多条数据变为红色位置,按C恢复上一步操作
再鼠标点击下一条数据
巨潮的列表页面打开后直接是是pdf,无法抓取
有部分mac用户表示代表没这个页面和黄色的“广告下载”,在搜索结果的列表页直接抓标题的link看看能够下载
第五课
1.Everything建站的进阶练习
1)Everything 建站,让本地文件可以通过 127.0.0.1的方式访问
http://www.xp85.com/html/article-98-5415.html
2)Excel超链接公式,第一列为待采集网址,第二列为超链接公式生成的网址,复制第二列到word里并另存为html文件
http://jingyan.baidu.com/article/dca1fa6fade21ff1a5405268.html
3)改host,让某个域名指向本地的html文件
http://jingyan.baidu.com/article/9faa72317903f1473c28cb01.html
4)开心抓取
自建网站的使用场景是:
1)第一次漏掉部分数据后补抓
可通过记录分页判断是否抓全,每个分页的条数都是固定的(10 or 15 or 30...)
2)将抓取过程分段(先抓到第二级/第三级目录的选择器,第二阶段再抓剩下的),保证数据条数和总时长可控
3)无法一次性抓全所有一级元素,或者一级元素里有重复
e.g. 知乎live抓取https://www.zhihu.com/lives/
知乎live的 "全部live"里只有460左右个live
知乎官网统计数字是3000+live
需要通过460个展开的关联推荐去扩展
剔除后获得全部清单,并采集所有live的收听人数/主题/价格
2.CouchDB的安装和配置
下载地址:http://couchdb.apache.org/
在webscraper的配置如下
sitemap db -http://localhost:5984/scraper-sitemaps
data db -http://localhost:5984/
2017年6月26日 更新
后面内容还会继续更新,不规律分页、表格等网页的抓取方式。
网页抓取中遇到问题的可以留言(请说清楚抓取的网址、元素,现在已进行的操作和遇到的问题),看到一定会即使回复的。