采集网站内容(字节面试锦集(一):AndroidFramework高频面试题总结)

优采云 发布时间: 2021-09-22 15:09

  采集网站内容(字节面试锦集(一):AndroidFramework高频面试题总结)

  字节访问brocade集合(一):Android框架高频访问问题摘要

  关键词:访谈锦缎系列(二):项目人力资源高频访谈总结)

  data采集采集体系结构中每个模块的详细分析

  网络爬虫的实现原理与技术

  爬虫工程师如何有效地支持数据分析师的工作

  基于大数据平台的互联网数据采集平台基本架构

  爬行动物工程师的成长道路

  如何在data采集中建立有效的监控系统@

  面试准备、人力资源和安卓技术等面试问题总结

  昨天,一位网友说,他最近采访了几家公司。他被问了好几次问题,每次回答都不是很好

  采访者:比如说,有100000个网站need采集,你是如何快速获得数据的

  要很好地回答这个问题,您实际上需要有足够的知识和足够的技术储备

  最近我们也在招聘,我们每周面试十几个人,只有一两个人觉得合适。他们大多数都和这位网友相似,缺乏整体思维,即使是那些有三四年工作经验的老司机。他们解决具体问题的能力很强,但很少站在新的角度从点到面全面思考

   采集覆盖率为100000 网站比大多数专业舆论监测公司更宽。为了满足面试官的“采集”需求,需要综合考虑从“网站集合”到“数据存储”的各个方面,并给出适当的方案来节约成本和提高工作效率

  让我们简单介绍一下从网站采集到数据存储

  一、10一万网站来自哪里

  一般来说,采集和网站是根据公司业务的发展逐渐积累起来的

  现在我们假设这是一家初创公司的需求。该公司刚刚成立,有这么多网站,基本上可以说是一个冷启动。我们如何采集这10万网站?有几种方法:

  1)历史业务积累

  无论是冷启动还是什么,既然有采集的需求,就一定有项目或产品的需求,相关人员在前期一定调查了一些数据源,采集了一些重要的网站数据,这些数据可以作为我们采集的网站和采集的原创*敏*感*词*

  2)Association网站

  在一些网站的底部,有与网站相关的链接。特别是对于政府网站,通常有相关下属部门的官方网站

  

  3)网站导航

  有些网站可能出于某种目的(如排水等)采集网站并进行分类和展示,以方便人们查找。这些网站可以很快为我们提供第一批*敏*感*词*网站.然后,我们可以通过网站关联等方式获得更多的网站

  

  4)搜索引擎

  您还可以准备一些与公司业务相关的关键词在百度、搜狗等搜索引擎中搜索,并通过处理搜索结果提取相应的网站作为我们的*敏*感*词*网站

  

  5)第三方平台

  例如,一些第三方SaaS平台将有7~15天的免费试用期,因此我们可以利用这段时间采集下载与我们业务相关的数据,然后提取网站作为我们最初的采集*敏*感*词*

  虽然该方法是最有效、最快的网站采集方法,但在试验期间不太可能获得100000网站,因此有必要将上述相关网站和其他方法结合起来,以快速获得所需的网站@

  通过以上五种方式,我相信我们可以很快采集到我们需要的10万个网站。但是,我们如何管理这么多网站,如何知道它们是否正常

  二、10一万网站如何管理

  当我们采集100000网站数据时,我们面临的第一件事是如何管理、配置采集规则,以及监控网站是否正常

  1)如何管理

  100000网站,如果没有专门的系统来管理,那将是一场灾难

  同时,由于业务需要,比如智能推荐,我们需要对网站进行预处理,比如标签,这时需要一个网站管理系统

  

  2)如何配置采集规则

  我们前期采集的10万网站只是主页,如果只把主页作为采集任务,我们只能采集在主页上获取少量信息,丢失率很高

  如果你想让整个站点采集按照主页URL进行,会消耗大量服务器资源,成本太高,因此需要配置我们关心的栏目和采集栏目

  

  然而,对于100000网站,如何快速高效地配置列?目前,我们通过自动解析HTML源代码来进行*敏*感*词*的列配置

  

  当然,我们也尝试过机器学习,但效果并不理想

  由于采集所需的网站数量达到100000,因此不能使用XPath和其他精确定位方法来采集.否则,配置100000网站井时,花椰菜将变冷

  同时,数据采集必须使用通用爬虫,并使用正则表达式来匹配列表数据

  3)如何监控

  由于有100000个网站,在这些网站中,每天都会有网站修订,或列修订,或新的/现成的列。因此,有必要根据采集的数据对网站进行简要分析@

  例如,如果网站中有几天没有新数据,则一定是有问题。要么是网站更改了版本,导致信息规则性频繁失败,要么是网站本身有问题

  

  为了提高采集的效率,可以使用单独的服务定期检测网站和列,首先检查网站和列是否可以正常访问;其次检查配置的列信息正则表达式是否正常,以便运维人员进行维护

  三、task缓存

  100000网站。配置列后,采集条目URL应达到百万级别。采集器如何有效地获取采集的这些条目URL@

  如果将这些URL放入数据库中,无论是MySQL还是Oracle,采集器获取采集任务都会浪费大量时间,并大大降低采集效率

  如何解决这个问题?首选内存数据库,如redis、Mongo dB等。redis通常使用采集进行缓存。因此,在配置列时,您可以将列信息作为采集任务缓存队列同步到redis

  

  四、网站how采集

  比如说,如果你想一年赚几百万,最有可能的是去华为、阿里巴巴、腾讯等一线大工厂,你需要达到一定的水平,这条路肯定很难走

  类似地,如果需要采集000000级别列表URL,则不得实施常规方法

  必须采用分布式+多进程+多线程的方式,同时还需要结合内存数据库redis进行缓存,实现高效的任务获取和采集信息的复制

  

  同时,信息分析,如发布时间和文本,也必须通过算法进行处理。例如,现在流行的GNE

  在列表采集中可以获得的某些属性不应与文本一起解析。例如,标题。通常,从列表中获得的标题的准确性远远高于从信息HTML源代码中通过算法解析的标题的准确性

  同时,如果有一些特殊的网站,或者一些特殊的需求,我们可以使用定制的开发方法来处理它们

  五、统一数据存储接口

  为了保持采集的时效性,采集的100000网站可能需要十几台或二十台服务器。同时,将在每台服务器上部署n采集器。通过一些定制脚本,采集器的总数将达到数百台

  如果每个采集器/自定义脚本都开发了自己的数据存储接口,那么在开发和调试上会浪费大量的时间,而且后续的操作和维护也不是坏事,特别是当业务发生变化需要调整时,因此需要统一数据存储接口

  由于统一的数据存储接口,当我们需要对数据进行一些特殊的处理,如清理和校正时,我们不需要修改每个采集存储部分,我们只需要修改接口并重新部署它

  快、方便、快捷

  六、数据和采集监测

  10万网站的采集覆盖率每天肯定超过200万数据,数据分析算法再精确也达不到100%(90%非常好).因此,在数据分析中必须有例外。例如,发布时间大于当前时间,文本收录相关新闻信息等

  但是,由于我们已经统一了数据存储接口,我们可以在接口上进行统一的数据质量验证,优化采集器并根据异常情况定制脚本

  同时,您还可以统计每个伪原创的采集数据

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线