简易数据分析(三):Web Scraper 批量抓取豆瓣数据与导入已有爬虫

December 17, 2023
测试
测试
测试
测试
3 分钟阅读

上篇文章我们爬取了豆瓣电影 TOP250 前 25 个电影的数据,今天我们就要在原来的 Web Scraper 配置上做一些小改动,让爬虫把 250 条电影数据全部爬取下来。

前面我们同时说了,爬虫的本质就是找规律,当初这些程序员设计网页时,肯定会依循一些规则,当我们找到规律时,就可以预测他们的行为,达到我们的目的。

今天我们就找找豆瓣网站的规律,想办法抓取全部数据。今天的规律就从常常被人忽略的网址链接开始。

1.链接分析

我们先看看第一页的豆瓣网址链接:

https://movie.douban.com/top250?start=0&filter=

  1. https://movie.douban.com这个很明显就是个豆瓣的电影网址,没啥好说的
  2. top250这个一看就是网页的内容,豆瓣排名前 250 的电影,也没啥好说的
  3. ?后面有个start=0&filter=,根据英语提示来看,好像是说筛选(filter),从 0 开始(start)

再看看第二页的网址链接,前面都一样,只有后面的参数变了,变成了start=25,从 25 开始:

我们再看看第三页的链接,参数变成了 start=50,从 50 开始:

分析 3 个链接我们很容易得出规律:

start=0,表示从排名第 1 的电影算起,展示 1-25 的电影 start=25,表示从排名第 26 的电影算起,展示 26-50 的电影 start=50,表示从排名第 51 的电影算起,展示 51-75 的电影 …... start=225,表示从排名第 226 的电影算起,展示 226-250 的电影

规律找到了就好办了,只要技术提供支持就行。随着深入学习,你会发现 Web Scraper 的操作并不是难点,最需要思考的其实还是这个找规律。

2.Web Scraper 控制链接参数翻页

Web Scraper 针对这种通过超链接数字分页获取分页数据的网页,提供了非常便捷的操作,那就是范围指定器

比如说你想抓取的网页链接是这样的:

  • http://example.com/page/1
  • http://example.com/page/2
  • http://example.com/page/3

你就可以写成

http://example.com/page/[1-3]

把链接改成这样,Web Scraper 就会自动抓取这三个网页的内容。

当然,你也可以写成

http://example.com/page/[1-100]

这样就可以抓取前 100 个网页。

那么像我们之前分析的豆瓣网页呢?它不是从 1 到 100 递增的,而是 0 -> 25 -> 50 -> 75 这样每隔 25 跳的,这种怎么办?

  • http://example.com/page/0
  • http://example.com/page/25
  • http://example.com/page/50

其实也很简单,这种情况可以用[0-100:25]表示,每隔 25 是一个网页,100/25=4,爬取前 4 个网页,放在豆瓣电影的情景下,我们只要把链接改成下面的样子就行了;

https://movie.douban.com/top250?start=[0-225:25]&filter=

这样 Web Scraper 就会抓取 TOP250 的所有网页了。

3.抓取数据

解决了链接的问题,接下来就是如何在 Web Scraper 里修改链接了,很简单,就点击两下鼠标:

1.点击Stiemaps,在新的面板里点击 ID 为top250的这列数据:

2.进入新的面板后,找到Stiemap top250这个 Tab,点击,再点击下拉菜单里的Edit metadata

3.修改原来的网址,图中的红框是不同之处:

修改好了超链接并点击Save Sitemap保存好,重新抓取网页就好了。操作和上文一样,我这里就简单复述一下不做步奏详解了:

  1. 点击Sitemap top250下拉菜单里的Scrape按钮
  2. 新的操作面板的两个输入框都输入 2000
  3. 点击Start scraping蓝色按钮开始抓取数据
  4. 抓取结束后点击面板上的refresh蓝色按钮,检测我们抓取的数据

如果你操作到这里并抓取成功的话,你会发现数据是全部抓取下来了,但是顺序都是乱的。

我们这里先不管顺序问题,因为这个属于数据清洗的内容了,我们现在的专题是数据抓取。先把相关的知识点讲完,再攻克下一个知识点,才是更合理的学习方式。

这期讲了通过修改超链接的方式抓取了 250 个电影的名字。下一期我们说一些简单轻松的内容换换脑子,讲讲 Web Scraper 如何导入别人写好的爬虫文件,导出自己写好的爬虫软件。

上两期我们学习了如何通过 Web Scraper 批量抓取豆瓣电影 TOP250 的数据,内容都太干了,今天我们说些轻松的,讲讲 Web Scraper 如何导出导入 Sitemap 文件。

前面也没有说,Sitemap 是个什么东西。其实它就是我们操作 Web Scraper 后生成的爬虫文件,相当于 python 爬虫的源代码。把 Sitemap 导入 Web Scraper 运行就可以爬取数据。学习了这一章节,就可以分享我们的设置好的爬虫文件了。

导出 Sitemap

导出 Sitemap 很简单,比如说我们创建的 top250 Sitemap,点击 Sitemap top250,在下拉菜单里选择 Export Sitemap,就会跳到一个新的面板。

新的面板里有我们创建的 top250 的 Sitemap 信息,我们把它复制下来,再新建一个 TXT 文件,粘贴保存就好了。

导入 Sitemap

导入 Sitemap 也很简单,在创建新的 Sitemap 时,点击 Import Sitemap 就好了。

在新的面板里,在 Sitemap JSON 里把我们导出的文字复制进去,Rename Sitemap 里取个名字,最后点击 Import Sitemap 按钮就可以了。

这期我们介绍了 Web Scraper 如何导入导出 Sitemap 爬虫文件,下一期我们对上一期的内容进行扩展,不单单抓取 250 个电影名,还要抓取每个电影对应的排名,名字,评分和一句话影评。

● 深入理解 Web 协议(一):HTTP 包体传输● 简易数据分析(二): Web Scraper 初尝鲜,抓取豆瓣高分电影● 简易数据分析 (一):源起、了解 Web Scraper 与浏览器技巧

·END·

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多