不用采集规则就可以采集( 采集时可能遇到的采集大坑和套路登陆-cookies和重复登录Cookies)
优采云 发布时间: 2022-01-16 12:07不用采集规则就可以采集(
采集时可能遇到的采集大坑和套路登陆-cookies和重复登录Cookies)
1. 采集login-cookies和重复登录时可能遇到的采集大坑和套路1.
cookie有很多用途,尤其是很多网站为了避免用户讨厌的频繁重复登录对话框,都使用cookie作为临时记录。当用户再次访问网站时,缓存的Cookies可以帮助用户登录网站。数据 采集 的好处也是如此。记录已经登录账户的cookies可以避免采集器下次重新输入用户名和密码,也可以跳过一些登录时需要做的复杂验证(比如验证码、滚动条、点击图片等)。
这里有一些陷阱。首先,cookies的登录不是无限期的。现在大都会有时间段,到期后需要重新登录,所以不要指望能永远登录采集;其次,有些网站cookies登录的账号和IP有关,也就是说,当你用不同的IP用相同的cookies登录时,可能会被强制重新登录。例如,会提示您的帐号被盗,请重新登录或建议更改密码,这可能会中断采集程序。
解决方案是测试它。如果没有,就用一个IP和一个Cookie,并开启多个采集规则,相当于对采集开启多个线程。请记住,云采集无法为每个节点指定cookie和IP,因此很有可能会卡在同时登录上。
2. 元素定位-点击方式定位不准确
对于专门用过优采云点击元素采集的人来说,单个元素通常是没有问题的,但是在跨页循环的时候,原本定位在本页的元素可能不会定位到下一页. 元素。这个在用得少的人眼里可能不会遇到,但是如果长期使用优采云采集器采集很多种网站就会遇到这些情况,比如我的页面想采集一个新闻网站publisher,采集几页后,某个文章和这个文章有不同样式,同样的定位是 采集 @采集 不是发件人。这是Xpath语句引起的问题。
首先,你点击的Xpath类似于你在Firefox浏览器中定位元素时自动生成的Xpath语句。这个语句是一个很死板的语句,它的结构类似于./table/tr[1]/a[1],很简单。方法是看它是否收录大量的[数字]。一般来说,这就是我们提到的死规则,因为a[1]的意思是找到第一个a标签。这个页面可能是第一个。一个页面可能不是第一个,所以专家通常使用相对定位或模糊定位。建议您使用一些高级定位语句和收录 xpath 的语句。
3. 元素定位-写入Xpath但无法定位(在浏览器中测试可以定位)
尽管有多种可能性,但最难注意到的一种是 网站 使用 iframe 标记。通常情况下,如果点击定位元素,会自动填写iframe选项,但是我第一个在浏览器中用辅助工具编写xpath测试时没有提示,就会漏掉。这时候需要注意这种可能性,也可以填写iframe的定位。优采云有这个选项。
4. 翻页 - 无限翻页
这个问题比较常见。经常遇到自己生成的循环点击下一页的循环,但是莫名其妙的会在前几页循环,后面几页就不会了。还有最后一页没有跳出来一直刷新的可能。这些是由 Xpath 定位问题引起的。因为有几种可能,解决方法也不同,建议大家看一下我博客里写的各种文档,对比一下自己的问题。
5. Ajax 加载 - 不要乱设置,可能会泄露数据
判断 Ajax 加载的方法有很多种。简单的方法就是点击下一页,URL没有变化,就可以判断使用了ajax加载。这种东西出现在很多新闻网站中,比如汽车之家新闻的评论页面。如果可以确定该页面没有ajax,可以在优采云中勾选非ajax页面加速,提高加载速度。如果有,则需要检查 Ajax 加载并选择加载时间。
这里有几个坑。如果页面没有用ajax加载,也可以查看ajax加载,不影响页面加载,但是假设加载时间为2秒,优采云之后会判断页面已经加载2 秒。加载后,如果有卸载的数据,可能会被忽略,导致数据丢失。所以建议是,如果页面没有加载ajax,就不要选择了。如果有,应该根据页面的响应速度来决定加载多少秒(其实很大程度上就是页面的js加载和运行效率)。多在单机上测试,不要一下子上云采集,不保证会被坑。
6. 数据提取 - 如果我提取了一堆我不想要的东西怎么办?
数据提取都是从html代码中提取出来的,所以出现了看你想提取什么的问题。如果只是想提取前端页面能看到的文字,一般可以直接提取。这个在优采云 比较傻,效果也很好。但是,网页的结构很奇怪,而且存在各种嵌入问题。有一种情况是文本被分成了多个段落,但是我们想采集这整段,在上一页可能看不到,查看代码后才发现文本是由各种其他嵌入式元素分隔。
解决方案并不太复杂。如果是通用的,可以用于整段,比如P标签采集文本,然后用正则表达式或者普通替换来清理不需要的字符串、空格、换行。等等。
7. 条件判断-if else 大法
优采云的条件判断虽然不如写代码,但是在工具里面也很强大。在优采云中可以实现的逻辑判断是如果a元素出现/a元素不出现则执行xxx,如果页面出现文本xxx或者文本xxx不出现则执行xxx。用程序员的话说,if a then xxx, else if b then xxx, else xxx。可以使用多个条件来判断,因此不限于一个或两个条件。如果当前条件判断为假,则执行默认流程。
这是什么套路,主要是在批处理采集页面的时候,会遇到不同的页面。例如,虽然采集网易新闻列表中的新闻页面都称为新闻,但页面格式不同,导致采集元素的定位和处理过程可能完全不同. 所以用一些条件作为逻辑判断,比如出现了什么元素,我认为是这种新闻页面,采用了这个采集流程;如果出现另一个元素,则认为是另一种消息,另一个采集进程,这样可以更好地解决与文章相同的列表,但详情页不同的问题。
8. failed retry - 莫名失败,无莫名重试
<p>重试失败是一个形而上学的问题。失败的可能性太多了。比如对方应用服务器卡住,页面数据没有返回,服务器500出错,服务器403重定向,部分页面没有加载,页面加载超时等。只要不出现采集的数据入口,这7页即使加载也会失败,但是情况很多,所以设置失败重试的套路是正常的就找一个