# 数据 | 通过Web Scraper获取职位信息

By [一点儿知识](https://paragraph.com/@0x0f3193886ae7ecf1bb1d335c375a0526d4522b34) · 2022-06-03

---

💡 Web Scraper下载地址：

    https://chrome.google.com/webstore/detail/web-scraper-free-web-scra/jnhgnonknehpejjnehehllkliplmbmhn?hl=zh-CN
    

最近想通过爬虫爬一下招聘网站的职位信息，但又不会写代码，就想通过Web Scraper插件来代劳，网上虽然有很多教程，但都不太适合我，或者就是教程的无用信息太多，对于只是使用它的用户来说，内容就显得非常冗余。所以我打算写一篇简短且实用的文章，如果想深入研究，建议可以阅读下方的官方文档。安装教程我就不写了，打开上方的链接一键安装就行了（打不开链接的用户去百度搜索一下“谷歌打不开怎么办？”）。

💡 官方文档:[https://webscraper.io/documentation](https://webscraper.io/documentation)

首先，我需要明确一下我的爬取目标，我需要找到Boss直聘上：

1、地理位置在成都

2、数据分析相关职位

3、爬取薪资、学历、福利待遇、职位描述、公司名称、公司地理位置

接下来，我们开始获取以上信息:

通过Boss直聘网站我们完成了前两项的筛选。

![](https://storage.googleapis.com/papyrus_images/8ee969670d9ff29627d6934dc5925ff56e72e58eca495006f535f3cd49e3a6d4.png)

我们通过快捷键Mac`Command`+`Option`+`I` ;Win`Ctrl`+`Shift`+`I` 打开Web Scraper，选择Creat Sitemap。

![](https://storage.googleapis.com/papyrus_images/d7a1ae4a70aaf8f5c3975a535896a824f8def85e0cf75dbc7a8e23f7f2d71558.png)

输入我们为该事件取的名字和粘贴刚才确定好条件的Boss直聘链接。

![](https://storage.googleapis.com/papyrus_images/1b7e3cd474e267631ab4867700e18c5271d67020cc84e50e8d7e325397d2df64.png)

接下来，重点部分来了，我们需要开始创建`选择器`了，首先我们需要知道的是选择器是带有`层级概念`的，我将我的查询分为了四个部分:

*   第一个是不同页的抓取
    
*   第二个是不同块的抓取
    
*   第三个是块中元素的抓取
    
*   第四个是页内元素抓取
    

现在你可能还不太理解，没关系，跟着我一起实践。

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDCcMNjZYiaj396CjTJ89S4mjC36MzlzLDRPsxug5z1bMdbHLfCH4kkKg/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDCcMNjZYiaj396CjTJ89S4mjC36MzlzLDRPsxug5z1bMdbHLfCH4kkKg/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

通过上方的动图我已经完成了第一步不同页的抓取，让我再详细的讲解一下原理：

首先我点击了之前创建的Sitemap,开始在该页面创建抓取要求，因此我新建了一个选择器（Add new selecter）并命名为Page，目的是为了实现在不同页之间抓取。

其次，我选择了抓取类型为Pagination（页码），然后点击了Select选择该页最下方的页选项（通常我们选择两项后该插件就会自动补齐剩余内容），之后选择Done Selecting完成选择。

💡 比较遗憾的是，Pagingation会一次性的查询搜索结果的所有页内容，我这里搜索结果达到10页，如果只是爬取3页，这个方法就有点不可行了，解决方案如下:

![](https://storage.googleapis.com/papyrus_images/db30b6d9a996c40bb8f42707d75fb8da43dfa717e4ec9c11ca8066ea417813c5.png)

我们将

    https://www.zhipin.com/c101270100/?query=数据分析师&page=1&ka=page-1
    

改为

    https://www.zhipin.com/c101270100/?query=数据分析师&page=[1-3]&ka=page-[1-3]
    

 重新创建一个Sitemap即可。

接下来我们讲解页面中不同块的抓取：

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDUe2AEd4qGRwJdCzDxS7z7RpT9MH3zhFKHmhibXdeBSLDBkTjI42Tg4g/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDUe2AEd4qGRwJdCzDxS7z7RpT9MH3zhFKHmhibXdeBSLDBkTjI42Tg4g/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

我们仍然在Pagination的Sitemap进行抓取，以方便大家理解抓取的层级结构：

我们在Pagination的同级建立了新的选择器，然后命名为block，抓取类型选择了Element（元素），这里的一个元素就是一块内容，我们选择2个块后，插件自动选择了页面中的所有块，然后选择Done  Selecting完成选择，仔细看你会发现，我们选择完成后会自动填入`.job-list li:nth-of-type(-n+6)` ，从代码来看，其实上方并未自动完后所有元素的填充，所以操作是错误的，我们需要记住`:nth-of-type(-n+6)` 这个代码，因为它的本质就是抓取量的筛选，我们可以把6修改为任意数字，也就是抓取任意多条数的内容，其实这里就是限制抓取页面6个元素，正确的情况应该是`.job-list li` ，另值得注意的是，我们一定要勾选`Multiple` ，否则抓取结果会只有一个。

抓取块的目的是为了进一步的抓取块中的元素，也就来到了第三部分:

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDhc3e3YaDnNPE3Jdicq095F8wvViaFHshpEyHVibNt5QtfEBan7eBQBRGw/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDhc3e3YaDnNPE3Jdicq095F8wvViaFHshpEyHVibNt5QtfEBan7eBQBRGw/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

限于Gif大小，我仅展示薪水的抓取，其它元素的抓取方法相同，我们选择抓取类型为文本（Text），然后直接选择对应文本即可，需要注意这里千万不能勾选Multiple ，因为我们在block中已经勾选了多个block，这里就无须再次勾选。

最后，如果我们还想要抓取到页内的内容，我们只需要增加一个Link类型的抓取，并点击进入详情页抓取需要的内容

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDFNomfu36Dp4osRlib8dGJtCOQg4nW1e1e1D2h2jiaDd1ia2XVJqb4xoEQ/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDFNomfu36Dp4osRlib8dGJtCOQg4nW1e1e1D2h2jiaDd1ia2XVJqb4xoEQ/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

这里我把需要的能力给抓取了下来：

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDmpOO4yy7EtWIMznENxXfCZUDnzICPegYUib7wpvgMVaVLfYDOQjjzUA/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDmpOO4yy7EtWIMznENxXfCZUDnzICPegYUib7wpvgMVaVLfYDOQjjzUA/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

到这里，我们的整个抓取流程就结束了，我们来看一下我们的抓取结构，选择Selecter Graph。

![](https://storage.googleapis.com/papyrus_images/97a3415057e05524416db63d7548f5eb63153ccdeb51f7880a310300ffedf389.png)

通过该图我们能更清楚地知道我们的抓取层级，页之间的循环抓取、页中区块的抓取实际上是两个同级的参数，而区块中的各参数与区块是父子关系，页内参数也和跳转链接是父子关系，明白这样的层级之后，我们就可以抓取所有的网页内容。

![](https://storage.googleapis.com/papyrus_images/0e4ba1b8a255f4e52d8838aa6f8f85698441911eb39a2b9c5e8f7789d4b79b6c.png)

现在我们就可以选择Scrape进行内容抓取了。

![](https://storage.googleapis.com/papyrus_images/0214c3ceac30689d07d806433f72185b20758ad88d220a2c11d92ec7dec69271.png)

接下来是设置间隔时间，一般情况下默认2000ms就行了，数据量大可以延长间隔时间。

![](https://storage.googleapis.com/papyrus_images/94ba4a660e37f877fac347867cb32a2fdce0e2969479972c24a1961fdfddbcfb.png)

抓取完成后，我们点击`Refresh data`就可以加载出数据了。

![](https://storage.googleapis.com/papyrus_images/fcff004da17c4a6bed7dec036448943a004b823e1706e5f940541bcc05af951d.png)

然后选择Export Data导出数据。

![](https://storage.googleapis.com/papyrus_images/b7d65bf7b91a5de92c473a89819cf187c8636767baeef155fd880b1c9005ec46.png)

最终数据结果如图:

![](https://storage.googleapis.com/papyrus_images/1838faae6f5e6bbecfbc8c73d8aca6af78a40cbe625b2276f8c523b36eb9d315.png)

此外，表格类型抓取我觉得也可以用一下，因为从网上复制粘贴的效果不太好。

[https://mmbiz.qpic.cn/mmbiz\_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDoYT7ciaicCLOX1YYJEiaH7jgQ0emhv1ZxibfrPMb6hJPpbOn6H2ice2CoVg/640?wx\_fmt=gif&wxfrom=5&wx\_lazy=1](https://mmbiz.qpic.cn/mmbiz_gif/mP5Lm5f7OSMPQDbibqrX4biaMDYaJYHicYDoYT7ciaicCLOX1YYJEiaH7jgQ0emhv1ZxibfrPMb6hJPpbOn6H2ice2CoVg/640?wx_fmt=gif&wxfrom=5&wx_lazy=1)

表格抓取的操作非常简单，只需要创建表格页面的Sitemap，然后新建表格类型选择器，选择对应表格即可，导出结果如下:

![](https://storage.googleapis.com/papyrus_images/b976c9f56146e1d8be51b7cba73db4b034992c3a7f21dc18d4d30e985cfd8fba.png)

此外，还有几种类型的抓取，不经常用到，有兴趣可以自己去研究。

![](https://storage.googleapis.com/papyrus_images/cac93aa590d53945890729e05f1dc234009cf1bce170fbeae740635672476066.png)

---

*Originally published on [一点儿知识](https://paragraph.com/@0x0f3193886ae7ecf1bb1d335c375a0526d4522b34/web-scraper)*
