×
广告

运营必备技能——网页数据抓取简易教程(Chrome + Web Scraper)

96
两只龙猫
2017.06.25 12:38* 字数 3475

许多朋友看过三节课的抓取数据课程,但有许多小的问题还存在疑问。作为其中一名学习者,今天在这里总结、分享下课程学习的内容。

课程里面称学完了就能百分之百抓取网页数据,这个说法有一定噱头的成分。认真学完课程可以做到抓取大部分的网页,并且抓取数据的数据和网页复杂程度有关,不是想抓取哪部分就能抓取哪部分数据的。通常抓取到的数据会存在冗余(抓取到自己不想要的数据),后期可以使用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

2)http://www.dummies.com/software/microsoft-office-for-mac/excel-for-mac/using-a-web-query-to-load-tables-in-excel-2011-for-mac/

3)https://answers.microsoft.com/zh-hans/msoffice/forum/msoffice_excel-mso_other/excel-for-mac-2016/e21e464a-5b34-40e3-b744-050d11ab4dbc

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日 更新


后面内容还会继续更新,不规律分页、表格等网页的抓取方式。

网页抓取中遇到问题的可以留言(请说清楚抓取的网址、元素,现在已进行的操作和遇到的问题),看到一定会即使回复的。



运营进化
Web note ad 1