
正文
web scraper
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
参考:https://sspai.com/u/skychx/updates
https://www.jianshu.com/p/76cad8e963b5
:nth-of-type(-n+100)
元素名后加个
nth-of-type(-n+100)
,暂时只抓取前 100 条数据。
:nth-of-type(-n+N)
控制加载数量时,其实相当于在这个网页设立一个计数器,当数据一直累加到我们想要的数量时,就会停止抓取。
通过
Element Click
点击分页器翻页,只适用于网页没有刷新的情况,但是对于使用翻页器的网页,每次的翻页相当于刷新当前网页,这样每次都会设立一个计数器。https://sspai.com/post/57638
比如说你想抓取 1000 条数据,但是第 1 页网页只有 20 条数据,抓到最后一条了,还差 980 条;然后一翻页,又设立一个新的计数器,抓完第 2 页的最后一条数据,还差 980,一翻页计数器就重置,又变成 1000 了......所以这个控制数量的方法就失效了。
所以结论就是,如果翻页器类型的网页想提前结束抓取,只有断网的这种方法。
创建详情页子选择器
当你点击链接后就会发现,浏览器会在一个新的 Tab 页打开详情页,但是 Web Scraper 的选择窗口开在列表页,无法跨页面选择想要的数据。
处理这个问题也很简单,你可以复制详情页的链接,拷贝到列表页所在的 Tab 页里,然后回车重新加载,这样就可以在当前页面选择了。
抓取前我们要把等待时间调整得大一些,默认时间是 2000 ms,我这里改成了 5000 ms。
P
键,就可以匹配到标题的父标签
S:Select,按下键盘的 S 键,选择选中的元素
P:Parent,按下键盘的 P 键,选择选中元素的父节点
C:Child,按下键盘的 C 键,选择选中元素的子节点
Click type
点击类型,click more 表示点击多次,因为我们要抓取批量数据,这里就选择 click more,还有一个 click once 选项,点击一次
2.Click element uniqueness
这个选项是控制 Web Scraper 什么时候停止抓取数据的。比如说 Unique Text,表示文字改变时停止抓取数据。
我们都知道,一个网站的数据不可能是无穷无尽的,总有加载完的时候,这时候「加载更多」按钮文字可能就变成「没有更多」、「没有更多数据」、「加载完了」等文字,当文字变动时,Web scraper 就会知道没有更多数据了,会自动停止抓取数据。
3.Multiple
这个我们的老朋友了,表示是否多选,这里我们要抓取多条数据,当然要打勾。
4.Discard initial elements
是否丢弃初始元素,这个主要是去除一些网站的重复数据用的,不是很重要,我们这里也用不到,直接选择 Never discard,从不丢弃数据。
5.Delay
延迟时间,因为点击加载更多后,数据加载需要一段时间,delay 就是等待数据加载的时间。一般我们设置要大于等于 2000,因为延迟 2s 是一个比较合理的数据,如果网络不好,我们可以设置更大的数字。
container注意把 Type 类型改为 Element(元素),因为在 Web Scraper 里,只有元素类型才能包含多个内容。
因为我们是在 container 内选择文字的,一个 container 内只有一个电影名,所以 多选不要勾选 ,要不然会抓取失败。
【也就是说在选择容器的时候,要勾选multiple,意味着爬取所有的容器,但是后面的节点只是取每一个节点里面的一个,所以不能勾选多选】
Web Scraper 对中文关键字索引的支持不太友好,所以会抛出一些诡异的 bug,因此我并不建议大家用它的
Table
功能。
如果真的想抓取表格数据,我们可以用之前的方案,先创建一个类型为
Element
的 container,然后在 container 里再手动创建子选择器,这样就可以规避这个问题。
要借助 Link 选择器来辅助我们翻页,
Parent Selectors
——父选择器。next_page 这次要有两个父节点——_root 和 next_page,键盘按 shift 再鼠标点选就可以多选了,保存 next_page 选择器后,在它的同级下再创建 container 节点,用来抓取电影数据
翻页选择器节点 next_page 和数据选择器节点 container 是同一级,两个节点的父节点都是两个:_root 和 next_page:,这样解决了翻页的时候页面重新刷新的问题相当于递归的思想了








