Web Scraper——简单爬取豆瓣音乐250

需求

寻找值得听的专辑,并排序

数据来源

豆瓣音乐 250

工具

  • Web Scraper
  • Excel

方法

  1. Chrome 商店安装下载 Web Scraper 插件
  2. 选择爬取页面
  3. 选择器鼠标点选所爬元素与子元素
  4. Scrape
  5. 下载 csv 文件

1. Web Scraper

Web Scraper - Chrome 网上应用店 - Google

2. 选择爬取页面

Chrome 打开开发者模式,快捷键:com+option+i。

发现 Web Scraper 已经集合了进来。

点击 create new sitemap

输入你需要爬取的页面地址,名字的话随便取即可,不过好像只能输入英文。

3. 选择器鼠标点选所爬元素与子元素

父元素

如果爬取的类目只有一个的话,一个选择器就够用,不过如果需要多类目对应的话,就需要理解元素和子元素的概念。

多类目对应,一行元素对应三个属性:专辑名字、作者、分数。

点击添加 add new selector

  • id 写你最外层元素的名字
  • 勾选 mutiple
  • select 点中,在页面中取你需要爬取的大块内容
  • type 勾选 element
  • 勾选两到三个块元素,选择时为绿色,选为红色,一般点中两个后,页面上所有同类元素基本上全被红色点选

子元素

点你刚刚创建好的选择器,点进去再创建子元素选择器。

  • 这时命名你需要用到的属性,如专辑名,作者,分数
  • type 选 text
  • 不勾选 mutiple
  • 你只能在第一个元素上进行勾选

4. 运行 Scrape

此时,浏览器会自动弹出需要爬取的页面。

开始 scrape 前会让你选择时间参数

第一个默认不管,我一般会将第二个参数调高一点,给爬虫长一点的时间。

我尝试的时候,每次自动爬取后都会出现 not data yet。

不用担心,点击旁边的refresh,数据即可显示。

5. 下载 csv 文件

爬取完毕可导出 csv 文件。

注意分页

比如你需要爬的数据不会全部显示在一个页面中,这个时候就需要你观察网址后面带的参数。

比如知乎:

我关注的人:url 为 https://www.zhihu.com/people/wang-peng-50-40/following?page=2

如果你需要爬取 50 页,你就将最一开始设置网址的那个页面改写为

https://www.zhihu.com/people/wang-peng-50-40/following?page=[0-50]

比如豆瓣:

https://music.douban.com/top250?start=50

改为

https://music.douban.com/top250?start=[0-20]

即爬取前20页的数据。

爬虫导出与导入

爬虫不仅可以自己用,还可以用别人的和给别人做。导出格式为 json

比如我「爬取豆瓣音乐250」的爬虫 json :

1
{"_id":"douban-music","startUrl":["https://music.douban.com/top250?start=[0-225:25]"],"selectors":[{"id":"专辑名","type":"SelectorElement","selector":"div.pl2","parentSelectors":["_root"],"multiple":true,"delay":0},{"id":"专辑的名字","type":"SelectorText","selector":"a:nth-of-type(1)","parentSelectors":["专辑名"],"multiple":false,"regex":"","delay":0},{"id":"作者是谁","type":"SelectorText","selector":"p.pl","parentSelectors":["专辑名"],"multiple":false,"regex":"","delay":0},{"id":"排名分数","type":"SelectorText","selector":"span.rating_nums","parentSelectors":["专辑名"],"multiple":false,"regex":"","delay":0}]}