写点什么

想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

发布于: 2021 年 03 月 01 日
想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。

今天是持续写作的第 <font color="red">17</font> / 100 天。

如果你有想要交流的想法、技术,欢迎在评论区留言。


从本文开始,将通过一个个的案例带你进入无编码学爬虫领域,玩转 Web Scraper,万物皆可爬。

此类教程涉及图片比较多,学习的时候大量的依赖实操,所以在后续本系列内容将转换为视频载体提供给大家。


缓解一下视疲劳



缓解一下视疲劳


目标网站分析


本次要爬取的网站为:https://www.chuanboyi.com/zimeiti/search-catid-1-page-1.html,选择本案例的原因是要解决一般分页数据如何抓取的问题。


什么是一般分页,例如本案例中数据的分页方式就是通过底部的数字进行分页。

通过点击分页跳转链接发现分页规则为,页面的规则每个网站都不同,多点击几次一般都可以找到对应的规律:


https://www.chuanboyi.com/zimeiti/search-catid-1-page-1.htmlhttps://www.chuanboyi.com/zimeiti/search-catid-1-page-2.htmlhttps://www.chuanboyi.com/zimeiti/search-catid-1-page-3.htmlhttps://www.chuanboyi.com/zimeiti/search-catid-1-page-4.html
复制代码


首先创建一个新的爬虫。sitemapstart url 书写好即可。常规套路先测试任意一页的数据,实现之后再扩展到所有目标数据。

进入 selector 页面,新增加一个选择器,注意点选的时候至少点选 2 个元素,如果发现元素选择没有达到预期,例如下图所示内容,继续勾选直到选择的数据是你期望的数据即可(希望动图能给你增强理解)。


最终实现的效果是三个红圈中的数据全部存在并且正确, Save Selector


相同的手法在创建一个 price 选择器。

编写完毕如果需要修改注意是点击右侧的 Edit ,不要直接点击选择器,直接点击选择器会进入到子选择器添加界面。编写的过程中还需要不断的点击 Data preview 去确定数据是否正确。


点击 Element preview 会在页面中通过红色背景标记出选择的数据。

单页数据已经拿到了,接下来修改一下 metadata


Edit metadata 是什么意思? 非常简单,就是可以修改 sitemap 信息,包含标题和起始地址。


修改待抓取地址为多个,可以设置一个范围的 URL,范围 URL 设置格式为:


http://example.com/page/[1-3]
复制代码


如果设置为上述内容,那在爬取的时候回批量生成 3 个地址。


http://example.com/page/1http://example.com/page/2http://example.com/page/3
复制代码


也可以让数字编码按照 [001-100] 这样的规律生成或者按照 [0-100:10],该内容表示生成 0-100 的数字,但是间隔 10 个数字,也就是生成的是 0,10,20,...,100


以上设置需要预先知道总页码是多少,知道总页码之后就可以直接获取到目标数据了。


运行代码之后,在你的任务栏会出现一个蜘蛛网图标,注意不要关闭了。

运行过程中还会出现一个小浏览器,左上角的页码在不断的变动,表示数据在反复抓取。浏览器运行完毕会自动关掉,不要手动关闭(关闭爬虫程序就停止运行了)。


爬虫运行完毕,会出现如下问题,实际数据发现如果设置多个选择器,会导致链接爬取两边,数据并没有放在一起,呈现的效果如下图。还需要进行调整。

以下调整过程希望可以仔细练习,新知识要来喽!


修改爬虫,增加子选择器


上文在选择内容的时候出现了一点点小问题,数据抓取的不是我们期望的格式,咱希望抓到 titleprice 在一行,此时就需要父选择器与*子选择器*搭配使用了。


啥叫父选择器?网页中的各个元素都可以看成一个盒子,盒子里面有各种东西,可以有小盒子,小盒子里面才放着目标数据。


这种一层一层的嵌套就出现了父级与子级的概念,大盒子就是父级,小盒子就是子级,如果小盒子里面再有一个小盒子呢?子子孙孙无穷尽也。


emmm 不是,其实很多时候,按照父级->子级->子级的子级,这样是就能解决很多问题了。


细心的你可能已经注意到每次选择元素之后,都需要点击一下一个按钮,就是下图的 Done selecting,完成选择按钮,在这个按钮的左边有三个东东,分别是 SPC,含义都在下面,使用的时候按键盘操作即可,一般微操的时候会用。


  • S:Select,按下键盘的 S 键,选择选中的元素

  • P:Parent,按下键盘的 P 键,选择选中元素的父节点

  • C:Child,按下键盘的 C 键,选择选中元素的子节点



点击 select 之后,框选最外层的大元素,也就是选择一个目标区域最大的盒子,如下图所示。


以下 4 个位置相关的内容都核对好。重点注意位置 2,此时我们选择的是 Element 是由于上述动图选择的内容是后续的父级元素,所以此处为 Element内容。

目前对于这个 Type 下拉列表已经使用了 2 个选项了,一个是 Text,表示选择文本,一个是 Element 表示选中标签,别急后面还有好几种。

接下来的操作需要注意,要在父级标签里面添加子元素选择器,具体使用参考下图。

下图中尤其注意父级选择器,titleprice 的父级选择器都是刚才创建好的 parent_div。如果刚才父级选择器中的 Type 设置的是 Text,这里是没有办法选择 parent_div 的。

设置为上述内容之后发现选择的数据格式还是不正确,最终呈现的依旧是交错数据,问题出现在多选位置。


目标数据二次调整


点击下图所示按钮,出现其结构图。


查看当前 sitemap 的选择器图,根节点是什么,包含几个选择器,选择器下包含的子选择器。如果是实心圆圈表示可以展开。


上述爬取数据已经说过是出现在多选位置上,如果使用父级 + 子级选择器,最后的子级需要单选,因为一个父级元素中大概率有且仅有一个目标子元素。修改成如下内容。


点击运行爬虫程序。

得到的数据如下图所示,目标数据没有任何问题,最终在把所有的页面都匹配出来就可以完成任务了。

运行效果截图,注意页码即可。


最终获取到了 1000 条数据,与期望值相同,案例完成。

写在后面

逐步上路,使用 Web Scraper 会越来越有意思的,视频课准备中,元旦前后应该可以首发 CSDN 平台了。


**想学 Python 爬虫,可以订阅橡皮擦专栏哦~**


《爬虫百例教程》点击发现惊喜




博主 ID:梦想橡皮擦,希望大家点赞、评论、收藏。


发布于: 2021 年 03 月 01 日阅读数: 29
用户头像

爬虫 100 例作者,蓝桥签约作者,博客专家 2021.02.06 加入

6 年产品经理+教学经验,3 年互联网项目管理经验; 互联网资深爱好者; 沉迷各种技术无法自拔,导致年龄被困在 25 岁; CSDN 爬虫 100 例作者。 个人公众号“梦想橡皮擦”。

评论

发布
暂无评论
想做技术自媒体实现财富自由?先看看广告报价吧,无编码学爬虫之二。