c 抓取网页数据(如何查看二级页面(详情页)的三连数据?-八维教育)
优采云 发布时间: 2021-11-04 01:19c 抓取网页数据(如何查看二级页面(详情页)的三连数据?-八维教育)
如果这样做,实际上可以抓取所有已知的列表数据,但本文的重点是:如何抓取二级页面(详细信息页面)的三元组数据?
做了这么多爬虫,你可能已经发现,Web Scraper的本质就是模拟人的操作,达到爬取数据的目的。
那么我们平时如何查看二级页面(详情页)呢?其实直接点击标题链接即可跳转:
Web Scraper为我们提供了点击链接跳转的功能,即Type为Link的选择器。
感觉有点抽象?让我们通过示例进行比较以理解。
首先,在这种情况下,我们得到了标题的文本,此时的选择器类型为Text:
当我们想要获取一个链接时,我们必须创建另一个选择器。选中的元素是一样的,但是Type是Link:
创建成功后,我们点击Link type选择器,输入,然后创建相关选择器。下面我录了个动图。注意我的鼠标突出显示的导航路线部分。这可以很明显的看出几个选择器的层次关系:
4.创建详情页子选择器
当您点击链接时,您会发现浏览器会在一个新的Tab页中打开详情页,但是在列表页上打开了Web Scraper选择窗口,您无法跨页面选择所需的数据。
处理这个问题也很简单。可以复制详情页的链接,复制到列表页所在的Tab页,按回车重新加载,这样就可以在当前页面选中了。
我们在 Link 类型的选择器中创建了更多的选择器。这里我选择了4个数据,比如点赞数、*敏*感*词*数、采集数和分享数。这个操作也很简单,这里就不赘述了。
所有选择器的*敏*感*词*如下:
我们可以看到video_detail_link节点收录了4个二级页面(detail pages)的数据。至此,我们的子选择器已经全部建立。
5.获取数据
终于到了激动人心的部分,我们即将开始爬取数据。但是在爬行之前,我们需要把等待时间调大一点,默认时间是2000ms,我这里改成了5000ms。
你为什么这么做?看下图你就明白了:
首先,每次打开二级页面,都是一个全新的页面。这时候浏览器加载网页需要时间;
其次,我们可以观察到要捕获的点赞量等数据。页面刚加载时,它的值为“--”,过一会就变成一个数字。
所以,我们只等5000ms,等页面和数据加载完毕后,一起爬取。
配置好参数后,我们就可以正式抓取下载了。下图是我抓到的部分数据,特此证明这个方法有用:
6.总结
本教程可能有点困难。我将分享我的站点地图。如果在制作时遇到问题,可以参考我的配置。我在第六个教程中详细讲解了SiteMap导入的功能。可以一起吃。:
{"_id":"bilibili_rank","startUrl":["./ranking/all/1/0/3"],"selectors":[{"id":"container","type": "SelectorElement","parentSelectors":["_root"],"selector":"li.rank-item","multiple":true,"delay":0},{"id":"title","type ":"SelectorText","parentSelectors":["container"],"selector":"a.title","multiple":false,"regex":"","delay":0},{"id" :"author","type":"SelectorText","parentSelectors":["container"],"selector":"a span","multiple":false,"regex":"","delay":0 },{"id":"play_amount","type":"SelectorText","parentSelectors":["container"],"selector":"。
详细信息> span:nth-of-type(1)","multiple":false,"regex":"","delay":0},{"id":"danmu_amount","type": "SelectorText","parentSelectors":["container"],"selector":"span:nth-of-type(2)","multiple":false,"regex":"","delay" :0},{"id":"video_detail_link","type":"SelectorLink","parentSelectors":["container"],"selector":"a.title","multiple":false,"delay" :0},{"id":"coin","type":"SelectorText","parentSelectors":["video_detail_link"],"selector":"span.coin","multiple":false,"regex":"","delay":0},{"id":"collect","type":"SelectorText","parentSelectors":["video_detail_link"],"selector":"span.
collect","multiple":false,"regex":"","delay":0},{"id":"share","type":"SelectorText","parentSelectors":["video_detail_link"], “选择器”:“跨度。share","multiple":false,"regex":"[0-9]+","delay":0},{"id":"num","type":"SelectorText","parentSelectors": ["容器"],"选择器":"div. num","multiple":false,"regex":"","delay":0},{"id":"like","type":"SelectorText","parentSelectors":["video_detail_link"], “选择器”:“。操作范围。喜欢","multiple":false,"regex":"","
一旦掌握了二级页面的抓取方式,三级、四级页面就没有问题了。因为例程是相同的:数据是在链接选择器指向的下一页上捕获的。因为原理是一样的,我就不演示了。