爬取网页数据,也可以称为「网络爬虫」 ,能帮助我们快速搜集互联网的海量内容,从而进行深度的数据分析与挖掘。比如抓取各大网站的排行榜、抓取各大购物网站的价格信息等。而我们日常用的搜索引擎就是一个个「网络爬虫」。
    毕竟学习一门语言的成本太高了,有什么办法可以不学 Python 也能达到目的呢?当然有,借助 Chrome 浏览器的《Web Scraper》插件,让你在不用写代码的情况下,就能快速抓取海量内容。
    浏览器插件爬虫:Web Scraper - 图1
    懒人目录

    • 抓取页面中多条信息——bilibili 排行榜为例
    • 自动翻页抓取——豆瓣电影 Top250 为例
    • 抓取二级页面内容——知乎热榜为例

    抓取页面中的多条信息——BiliBili 排行榜为例安装《Web Scraper》后,在浏览器按 F12 进入开发者模式,就能在最后一个标签页看到《Web Scraper》的菜单。需要注意的是,如果开发者模式面板不在下方,则会提示必须将其放到浏览器下方才能继续。
    浏览器插件爬虫:Web Scraper - 图2
    在菜单中选择「Create new sitemap - Create sitemap」以创建新的 sitemap,填入名称与起始地址就可以开始了。这里以 BiliBili 排行榜为例,介绍如何抓取页面中的多条信息,起始地址设为「https://www.bilibili.com/ranking」。
    浏览器插件爬虫:Web Scraper - 图3
    这里我们需要抓取「视频标题」、「播放量」、「弹幕数」、「up 主」以及「综合得分」,因此首先为每一条记录创建一个封装器。点击「Add new selector」,id 填写「封装器」, type 选择「element」,然后点击「selector」,选择一条记录的外边框,外包框中需要包含上述所有信息,然后再选择第二条,这样就会发现页面中的所有记录都已自动选择,点击「Done selecting」完成数据的选择。还要记得勾选「Multiple」以保证抓取多条记录,最后保存该选择器即可。
    浏览器插件爬虫:Web Scraper - 图4
    返回后点击刚才的封装器,进入二级路径,创建「标题」选择器,id 填写「视频标题」,type 选择「text」,点击「selector」会发现第一条记录高亮显示,这是因为我们已提前将其设定为了封装器。选择包围框中的标题,再点击「Done selecting」完成标题的选择,注意这里不需要勾选「Multiple」,最后保存该选择器。
    浏览器插件爬虫:Web Scraper - 图5
    同样的,我们为「播放量」、「弹幕数」、「up 主」和「综合得分」分别建立选择器,选择后可以通过「Data preview」预览是否选中了想要的内容。另外还可以通过菜单栏中的「Sitemap bilibili_ranking - Selector graph」 直观地查看树状结构。
    浏览器插件爬虫:Web Scraper - 图6
    继续在刚才的菜单下选择「Scrape」开始创建抓取任务,单个网页的间隔时间和响应时间默认即可。点击「Start scraping」开始抓取。这时候浏览器会自动打开新的页面,停留数秒后自动关闭,代表抓取已完成。
    浏览器插件爬虫:Web Scraper - 图7
    点击「Refresh Data」刷新数据,或点击「Sitemap bilibili_ranking - Browse」查看数据。通过「Sitemap bilibili_ranking - Export data as CSV」即可下载为 CSV 格式文件。
    浏览器插件爬虫:Web Scraper - 图8

    ▲BiliBili 排行榜使用 Excel 打开,由于《Web Scraper》抓取的内容是无序的,因此需要对「综合得分」进行降序排列,以恢复原始排行榜的结果。

    自动翻页抓取——豆瓣电影 Top250 为例
    Bilibili 排行榜只有 100 条记录,并且都在一个网页中,那么如果有分页显示的情况该怎么办呢?这里以豆瓣电影 Top250 为例介绍自动翻页抓取。同样的,新建 sitemap,在填写起始地址前,我们先观察一下豆瓣电影 Top250 的构成,总共有 250 条记录,每页显示 10 条,共分为 25 页。
    浏览器插件爬虫:Web Scraper - 图9
    而每一页的网址都非常有规律,第一页的地址为「https://movie.douban.com/top250?start=0&filter=」,第二页仅仅是把地址中的「start=0」改为了「start=25」,因此我们填写起始地址时便可以填写「https://movie.douban.com/top250?start=[0-250:25]&filter=」,这里 start=[0-250:25] 表示 以 25 的步长从 0 取到 250,因此 start 分别为 0、25、50 等等。这样《Web Scraper》就会按顺序一页一页抓取数据了。
    image.gif
    接下来类似于 BiliBili 排行榜,创建「封装器」后再添加「电影名」、「豆瓣评分」、「电影短评」以及「豆瓣排名」选择器就行了,然后开始抓取。
    浏览器插件爬虫:Web Scraper - 图11
    可以看到浏览器会一页一页地进行翻页抓取,这里只需要安静地等待抓取完毕即可,最后得到的数据以「豆瓣排名」进行升序排序,就能获得豆瓣电影 Top250 的榜单了。
    浏览器插件爬虫:Web Scraper - 图12
    ▲豆瓣电影 Top250
    当然,这只是一种最简单的分页方法,而许多网站地址并不一定有着类似的规律,因此《Web Scraper》还有更多的方法能用来分页,但相对较为复杂,在此也不再赘述了。

    抓取二级页面内容——知乎热榜为例
    以上完成了对网页的单页以及多页内容的抓取,但不是每次都有着现成的数据摆在一个页面中,因此还需要更进一步地对二级页面进行搜寻。以知乎热榜为例,介绍如何对二级页面的「关注量」和「浏览量」进行抓取。首先,新建 sitemap,起始地址为「https://www.zhihu.com/hot」。然后像前面一样创建「封装器」,再创建「文章标题」、「文章热度」、「知乎排名」这三个选择器。image.gif接下来是重要步骤,创建一个「二级页面」的链接。点击「Add new selector」,id 填写「二级页面」, type 选择「link」,然后点击「selector」,选择文章的标题,即每篇文章的入口,确认选择后保存退出。
    浏览器插件爬虫:Web Scraper - 图14
    这样就相当于有了一个窗口,点击刚才创建的「二级页面」,进入下一级目录,然后像之前创建「文章标题」一样创建「关注量」与「浏览量」两个选择器。最后整个树状结构如下图所示。
    浏览器插件爬虫:Web Scraper - 图15
    点击「Sitemap zhihu_hot - Scrape」开始抓取,这里可以将「Page load delay」响应时间调大一些,确保网页完全加载完毕。这时候浏览器会依次打开每个二级页面进行抓取,因此需要等待一会儿。抓取任务完成后将结果下载为 CSV 文件,按「知乎排名」降序排列,即可获得整个知乎热榜的榜单。
    浏览器插件爬虫:Web Scraper - 图16
    ▲知乎热榜
    至此,介绍了如何使用《Web Scraper》抓取页面中多条信息、自动翻页抓取以及抓取二级页面内容。很显然《Web Scraper》的功能远不止这些,还有更多强大的功能比如图片抓取、正则表达式等等可自行摸索。另外,如果只是想要简单地抓取信息,可以尝试使用其它插件如《Simple scraper》《Instant Data Scraper》,这些插件甚至可以一键抓取,但相比《Web Scraper》,功能的丰富度还是欠缺不少的。
    浏览器插件爬虫:Web Scraper - 图17