robots.txt(飞鱼crm是什么)
资讯
2024-04-19
72
1. robots.txt,飞鱼crm是什么?
飞鱼crm系统是巨量引擎推出的一款为广告主搭建高效的客户管理系统,涵盖完整的金融贷款前后台服务,具有丰富的系统管理功能和基础管理功能。
通过连接广告投放与线索数据,深度挖掘线索背后的价值,降低广告主的线索处理成本、优化广告投放效果与进行客户再营销建设,从而提高达到广告主的企业营销效率与ROI(投资回报率)的结果。
2. 如何才能成为一名爬虫工程师?
一、爬虫工程师是干嘛的?
1.主要工作内容?
互联网是由一个一个的超链接组成的,从一个网页的链接可以跳到另一个网页,在新的网页里,又有很多链接。理论上讲,从任何一个网页开始,不断点开链接、链接的网页的链接,就可以走遍整个互联网!这个过程是不是像蜘蛛沿着网一样爬?这也是“爬虫”名字的由来。
作为爬虫工程师,就是要写出一些能够沿着网爬的”蜘蛛“程序,保存下来获得的信息。一般来说,需要爬出来的信息都是结构化的,如果不是结构化的,那么也就没什么意义了(百分之八十的数据是非结构化的)。爬虫的规模可达可小,小到可以爬取豆瓣的top 250电影,定时爬取一个星期的天气预报等。大到可以爬取整个互联网的网页(例如google)。下面这些,我认为都可以叫做爬虫:
1.爬知乎的作者和回答
2.爬百度网盘的资源,存到数据库中(当然,只是保存资源的链接和标题),然后制作一个网盘的搜索引擎
3.同上,种子网站的搜索引擎也是这样的
到这里,我们知道爬虫的任务是获取数据。现在比较流行大数据,从互联网方面讲,数据可以分成两种,一种是用户产生的(UGC),第二种就是通过一些手段获得的,通常就是爬虫。爬虫又不仅仅局限于从网页中获得数据,也可以从app抓包等。简而言之,就是聚合数据并让他们结构化。那么,哪些工作需要爬虫呢?
2.爬虫能做什么?
典型的数据聚合类的网站都需要爬虫。比如Google搜索引擎。Google能在几毫秒之内提供给你包含某些关键字的页面,肯定不是实时给你去找网页的,而是提前抓好,保存在他们自己的数据库里(那他们的数据库得多大呀)。所以种子搜索引擎,网盘搜索引擎,Resillio key引擎等都是用爬虫实现抓好数据放在数据库里的。
另外有一些提供信息对比的网站,比如比价类的网站,就是通过爬虫抓取不同购物网站商品的价格,然后将各个购物网站的价格展示在网站上。购物网站的价格时时都在变,但是比价网站抓到的数据不会删除,所以可以提供价格走势,这是购物网站不会提供的信息。
除此之外,个人还可以用爬虫做一些好玩的事情。比如我们想看大量的图片,可以写一个爬虫批量下载下来,不必一个一个点击保存,还要忍受网站的广告了;比如我们想备份自己的资料,例如保存下来我们在豆瓣发布过的所有的广播,可以使用爬虫将自己发布的内容全部抓下来,这样即使一些网站没有提供备份服务,我们也可以自己丰衣足食。
二、爬虫工程师需要掌握哪些技能?
我见过这样的说法:“爬虫是低级、重复性很多的工作,没有发展前途”。这是误解。首先,对于程序员来说基本上不存在重复性的工作,任何重复劳动都可以通过程序自动解决。例如博主之前要抓十几个相似度很高但是html结构不太一样的网站,我就写了一个简单的代码生成器,从爬虫代码到单元测试代码都可以自动生成,只要对应html结构稍微修改一下就行了。所以我认为,重复性的劳动在编程方面来说基本上是不存在的,如果你认为自己做的工作是重复性的,说明你比较勤快,不愿意去偷懒。而我还认为,勤快的程序员不是好程序员。下面我根据自己这段时间的工作经历,讲一讲爬虫需要哪些相关的技能。
1.基本的编码基础(至少一门编程语言)
这个对于任何编程工作来说都是必须的。基础的数据结构你得会吧。数据名字和值得对应(字典),对一些url进行处理(列表)等等。事实上,掌握的越牢固越好,爬虫并不是一个简单的工作,也并不比其他工作对编程语言的要求更高。熟悉你用的编程语言,熟悉相关的框架和库永远是百益无害。
我主要用Python,用Java写爬虫的也有,理论上讲任何语言都可以写爬虫的,不过最好选择一门相关的库多,开发迅速的语言。用C语言写肯定是自找苦吃了。
2.任务队列
当爬虫任务很大的时候,写一个程序跑下来是不合适的:
1.如果中间遇到错误停掉,重头再来?这不科学
2.我怎么知道程序在哪里失败了?任务和任务之间不应该相互影响
3.如果我有两台机器怎么分工?
所以我们需要一种任务队列,它的作用是:讲计划抓取的网页都放到任务队列里面去。然后worker从队列中拿出来一个一个执行,如果一个失败,记录一下,然后执行下一个。这样,worker就可以一个接一个地执行下去。也增加了扩展性,几亿个任务放在队列里也没问题,有需要可以增加worker,就像多一双亏筷子吃饭一样。
常用的任务队列有kafka,beanstalkd,celery等。
3.数据库
这个不用讲了,数据保存肯定要会数据库的。不过有时候一些小数据也可以保存成json或者csv等。我有时想抓一些图片就直接按照文件夹保存文件。
推荐使用NoSQL的数据库,比如mongodb,因为爬虫抓到的数据一般是都字段-值得对应,有些字段有的网站有有的网站没有,mongo在这方面比较灵活,况且爬虫爬到的数据关系非常非常弱,很少会用到表与表的关系。
4.HTTP知识
HTTP知识是必备技能。因为要爬的是网页,所以必须要了解网页啊。
首先html文档的解析方法要懂,比如子节点父节点,属性这些。我们看到的网页是五彩斑斓的,只不过是被浏览器处理了而已,原始的网页是由很多标签组成的。处理最好使用html的解析器,如果自己用正则匹配的话坑会很多。我个人非常喜欢xpath,跨语言,表达比价好,但是也有缺点,正则、逻辑判断有点别扭。
HTTP协议要理解。HTTP协议本身是无状态的,那么“登录”是怎么实现的?这就要求去了解一下session和cookies了。GET方法和POST方法的区别(事实上除了字面意思不一样没有任何区别)。
浏览器要熟练。爬虫的过程其实是模拟人类去浏览器数据的过程。所以浏览器是怎么访问一个网站的,你要学会去观察,怎么观察呢?Developer Tools!Chrome的Developer Tools提供了访问网站的一切信息。从traffic可以看到所有发出去的请求。copy as curl功能可以给你生成和浏览器请求完全一致的curl请求!我写一个爬虫的一般流程是这样的,先用浏览器访问,然后copy as curl看看有哪些header,cookies,然后用代码模拟出来这个请求,最后处理请求的结果保存下来。
5.运维
这个话题要说的有很多,实际工作中运维和开发的时间差不多甚至更多一些。维护已经在工作的爬虫是一个繁重的工作。随着工作时间增加,一般我们都会学着让写出来的爬虫更好维护一些。比如爬虫的日志系统,数据量的统计等。将爬虫工程师和运维分开也不太合理,因为如果一个爬虫不工作了,那原因可能是要抓的网页更新了结构,也有可能出现在系统上,也有可能是当初开发爬虫的时候没发现反扒策略,上线之后出问题了,也可能是对方网站发现了你是爬虫把你封杀了,所以一般来说开发爬虫要兼顾运维。
所以爬虫的运维我可以提供下面几个思路:
首先,从数据增量监控。定向爬虫(指的是只针对一个网站的爬虫)比较容易,一段时间之后对一些网站的数据增量会有一个大体的了解。经常看看这些数据的增加趋势是否是正常就可以了(Grafana)。非定向爬虫的数据增量不是很稳定,一般看机器的网络状况,网站的更新情况等(这方面我的经验不多)。
然后看爬虫执行的成功情况。在上面提到了用任务队列控制爬虫工作,这样解耦可以带来很多好处,其中一个就是可以就是可以对一次爬虫执行进行日志。可以在每次爬虫任务执行的时候,将执行的时间、状态、目标url、异常等放入一个日志系统(比如kibana),然后通过一个可视化的手段可以清晰地看到爬虫的失败率。
爬虫抛出的Exception。几乎所有的项目都会用到错误日志收集(Sentry),这里需要注意的一点是,忽略正常的异常(比如Connection错误,锁冲突等),否则的话你会被这些错误淹没。
三、爬虫与反爬
这同样是很深的一个话题,就像攻击武器与防御武器一样,双方总是在不断升级。常见的反爬措施(我遇到过的)有下面几种:
1.访问频率
很好理解,如果访问太频繁网站可能针对你的ip封锁一段时间,这和防DDoS的原理一样。对于爬虫来说,碰到这样的限制一下任务的频率就可以了,可以尽量让爬虫想人类一样访问网页(比如随机sleep一段时间,如果每隔3s访问一次网站很显然不是正常人的行为)。
2.登录限制
也比较常见。不过公开信息的网站一般不会有这个限制,这样让用户也麻烦了。其实反爬措施都或多或少的影响真实用户,反爬越严格,误杀用户的可能性也越高。对爬虫来说,登录同样可以通过模拟登录的方式解决,加个cookie就行了(话又说回来,网络的原理很重要)。
3.通过Header封杀
一般浏览器访问网站会有header,比如Safari或者Chrome等等,还有操作系统信息。如果使用程序访问并不会有这样的header。破解也很简单,访问的时候加上header就行。
4.JavaScript脚本动态获取网站数据
有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更高级的是,JavaScript在本地计算一个token,然后拿这个token来进行AJAX获取内容。而本地的JavaScript又是经过代码混淆和加密的,这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解),但是我们可以从另一个角度:headless的浏览器,也就是我们直接运行这个客户端程序,这可以100%地模拟真实用户!
5.验证码
这几乎是终极武器了,验证码是专门用来区分人和计算机的手段。对于反爬方来说,这种方式对真实用户和搜索引擎(其实可以通过记录搜索引擎爬虫的ip来区别对待,可以解决)的危害比较大,相信读者都有输入验证码的痛苦经历。但这种方法也并不是无敌的!通过现在很火的机器学习可以轻松的识别大部分的验证码!Google的reCAPTCHA是一种非常高级的验证码,但是听过通过模拟浏览器也是可以破解的。
6.ip限制
网站可能将识别的ip永久封杀,这种方式需要的人力比较大,而且误伤用户的代价也很高。但是破解办法却非常简单。目前代理池几乎是搞爬虫的标配了,甚至还有很多高匿代理等好用的东西。所以这基本上只能杀杀小爬虫。
7.网站内容反爬
有一些网站将网站内容用只有人类可以接收的形式来呈现(其实反爬就是区别对待人类和机器嘛)。比如将内容用图片的形式显示。但是近几年来人类和机器的差别越来越小,图片可以用OCR准确率非常高地去识别。
反爬总结
爬虫和反爬是典型的攻防双方的互相升级。但是我认为,这种升级不像军事,军事是无尽头的,但是爬虫和反爬是有尽头的。
爬虫的尽头就是浏览器,一旦使用浏览器,程序完全可以模拟真实用户发出请求,缺点是就是消耗资源,因为需要新开一个进程,解析DOM,运行客户端JavaScript代码。(chrome的node api在github开源仅仅两天,就拿到8k个star)
反爬的尽头就是像Google这种超级厉害的验证码,毕竟验证码的根本目的就是识别人类和机器的。
我正好有一个反爬做的非常好的例子。Google Arts Project项目是一个汇聚世界名画的艺术长廊,我比较喜欢里面的一些画,所以想下载一些(当然这是不对的),然后发现这个网站反爬做的相当好(因为版权属于收藏作品的博物馆,所以Google Arts Project肯定不会提供下载),要下载几乎是不可能的。我有点不服,开始用各种手段试图下载原图。尝试了一番,发现这个网站block掉了鼠标右键功能、审查元素发现图片并不是一个常规的图片、追踪网络包发现原图竟然不是一次网络请求拿到的,而是分成了好几次请求base64编码的字符流每次请求图片的一部分,然后在客户端组装起来图片!当然在客户端的代码也是经过加密和混淆的!这完全可以作为反爬的教科书了,既没有误伤用户,又让爬虫无法下手。
图片每次只请求部分
四、职业道德
成规模的爬虫一般都会使用集群,一般的小网站服务器规模可能不如爬虫集群的规模大。所以很多时候我们最好对要爬的网站限制一下频率。否则这些爬虫就相当于DoS攻击集群了!一般的网站都会有robots.txt可以参考。
好了,总结来说,写爬虫需要经验积累,需要灵活的思路。比如说我之前就遇到过网站,需要验证码验证拿到一个token,可是通过看网络请求发现这个token长得很像一个时间戳,然后本地自己生成一个时间戳发现也是能用的!于是就这样绕过了验证码。所以多多积累和尝试,可以偷不少懒,嘿嘿。
另外爬虫也不是和我之前想的那样是一个枯燥无味的工作,比如我就发现了不少很垃圾,很搞笑的网站,乐趣也蛮多的。学到的东西也不少。万变不离其宗嘛。
3. wordpress插件推荐?
WordPress是一款功能强大的博客系统,拥有丰富的插件资源,以下是一些推荐的WordPress插件:
- Yoast SEO插件:主要用于优化网站,其主要功能包括网站的SEO标题、网站的路径链接以及网站的关键词描述,同时也可以对网站进行分析,并为用户提供改进的意见。
- WooCommerce插件:可以用来创建商城并出售产品,有很多的免费或收费扩展程序,如果想利用WordPress博客程序搭建电子商务网站,可以选择WooCommerce插件。
- Slider Revolution插件:可以实现网站的滚动页面和动态框架,能够有效改善网站的框架布局。该插件还具有附加选项,可以通过拖拉页面编辑器来简化操作流程,让网站页面设置更加简单化,同时也让WordPress博客网页看起来更加美观。
- Akismet插件:可以过滤垃圾评论,帮助用户管理网站,并过滤一些敏感信息。对于热度比较高且评论比较多的WordPress博客网站来说,使用Akismet插件非常有必要。
- XML Sitemap插件:能够自动生成网站的sitemap.xml和robots.txt文件,这些文件对SEO优化非常有帮助,并可以提交给搜索引擎,以确保搜索引擎不会遗漏网站上更新的文章内容。如果网站文章收录效果比较差,那么XML Sitemap插件就是必备神器了。
- Jetpack插件:提供了一整套基于模块逐个激活的功能,包括联系表单、用户互动、网站备份等安全功能,目前使用的用户占很大比例。使用 Jetpack插件可以为网站的文件和数据带来多一份安全保障。
这些插件都有不同的功能和特点,你可以根据自己的需求选择适合的插件来增强你的WordPress博客网站。
4. 这个robots是什么意思?
当一个搜索蜘蛛访问网站时,首先访问根目录WWW下是否存在robots.txt,若存在,搜索机器人就会按照该文件中的内容来确定访问的范围。
01-认识robots.txt(1)robots.txt是搜索引擎访问网站时查看的第一个文件,决定着蜘蛛能或不能访问。
(2)若存在robots.txt文件,蜘蛛会按照该文件来确定访问的范围;若不存在,所有的搜索蜘蛛将能够访问网站上所有页面。
(3)robots.txt必须放在一个站点的根目录下,且文件名必须全部小写(真实的服务器就使用ftp上传)。
(4)建议就算允许所抓取所有内容,也要建一个空的robots.txt文件。
(5)可将sitemap网站地图放置robots.txt文件(地图写法:http://abc.com/sitemap.html)。
02-robots.txt的写法(1)允许所有搜索引擎访问网站所有内容
User-agent: *
Disallow:
(2)禁止所有搜索引擎访问网站所有内容
User-agent: *
Disallow: /
(3)只允许百度搜索引擎抓取
User-agent: Baiduspider
Disallow: /
(4)如果我们禁止除百度外的一切搜索引擎索引
User-agent: Baiduspider
Disallow:
robots.txt文件其实就是告诉蜘蛛哪些页面可以抓取,哪些页面不能访问。
5. 想学习人工智能和大数据方面的知识?
我阅读了很多关于人工智能的书籍,并且为了我的最新的著作《Artificial Intelligence in Practice》也进行了研究。当然,这也是因为我觉得这个主题非常吸引人。事实上,我会说我几乎“吞噬”了过去十年中出版的所有的重要的人工智能书。
我对这篇文章的计划是提名一本关于人工智能的最好的书。如果你只能阅读一本书,它应该是哪本书?但是,老实说,要从那么多我喜爱的书籍中挑选出一本还是比较艰难的。所以,我提供给你我喜爱书籍中的前五名。
《第四纪元:智能机器人,计算机和人类的未来》
(《The Fourth Age: Smart Robots, Conscious Computers, and the Future of Humanity》)
Byron Reese,发表于2018年5月
这本引人入胜的书认为人工智能将对人类产生巨大的影响,在某种程度上它将重新定义人类的意义。作为背景,Reese展示了前三个时代,科技重塑了人类,并将人工智能和机器人技术作为第四个转型时代。换句话说,这是一个扣人心弦(并且令人惊讶地乐观)的作品,讲述了我们如何到达今天的状态,以及我们应该如何应对新的时代。
最适合:了解AI对于我们这个物种意味着什么,而不是陷入一个悲观的暗淡的反乌托邦幻想中。
《生命3.0:人工智能时代,人类的进化与重生》
(《Life 3.0: Being Human in the Age of Artificial Intelligence》)
Max Tegmark,发表于2018年7月
这是巴拉克•奥巴马(Barack Obama)最喜爱的2018年书籍之一,被“泰晤士报”和“每日电讯报”评为年度最佳书籍。
在书中,物理学家和宇宙学家Tegmark开始以平易近人的方式将AI神话与现实区分开来。令人印象深刻的是,他设法涵盖了一些非常具有挑战性的话题和问题(我们如何通过自动化创造一个更加繁荣的世界?我们如何保护人工智能系统免受黑客攻击和恶意使用?)却没有表现得过于高深或过于简单化,当然,也没有告诉读者他的想法。
最适合:促进有关人工智能的富有挑战性、发人深省的对话,无论你是想给人们留下深刻印象还是引发一些严肃的人工智能战略讨论。
《未来简史》
(《Homo Deus: A Brief History of Tomorrow》)
Yuval Noah Harari,2017年3月出版
在他探索人类如何进化的深受欢迎的《人类简史》(《Sapiens》)之后,Harari展望了不远的未来,看看人类的将面临的是什么。人造生命只是这个设想世界的一部分,Harari还探索了一系列其他挑战,包括永生。如果你曾对《人类简史》很感兴趣,那么,作为后续的《未来简史》也值得一读。
最适合:将自然科学与激发围绕人类身份的哲学问题相结合。绝对是一个让你觉得更聪明!
人类简史TXT下载 链接:https://share.weiyun.com/e8802262a40150a8aacfcf5e4d3d09b2 (密码:k2M2)
未来简史TXT下载 链接:https://share.weiyun.com/ac80237ca87f9f3272a4d8b0cf6586d9 (密码:fVfn)
《人工智能超级大国:中国、硅谷和新世界秩序》
由李开复于2019年1月出版
在我最近读过的一本书中(撰写本文时),李开复认为,由于中国在这一领域的惊人增长,它现在可以与美国的AI技术相媲美。对于这两个超级大国,以及世界其他地区,这意味着巨大的商业和社会变革将以超乎任何人想象的速度冲击我们。
如果全球政治真的不是你的事情,那就不要拖延了。 李开复描绘了一幅非常清晰的画面,说明这种日益增长的人工智能竞争对于人们的工作意味着什么
最适合:了解哪些工作(蓝领和白领)最有可能受到AI的影响,以及哪些工作可以通过AI加强。
《人+机器:畅想人工智能时代的工作》
(《Human + Machine: Reimagining Work in the Age of AI》)
由Paul Daugherty和H. James Wilson于2018年3月出版
Daugherty和Wilson是埃森哲的首席技术和创新官以及IT和商业研究的常务董事,这本书关注人工智能的商业影响,或者更具体地说,是公司如何使用人工智能进行创新和发展。
本书的关键是,AI不会触及任何业务流程。在所有业务领域,人类和智能机器正在更紧密地合作,并改变公司的运营方式。实际上,作者提出了六种混合的“人机+机器”角色,他们认为每个企业都必须将这个落实到位。
最适合:为希望利用AI革命的商业领袖提供实用蓝图。
6. 怎么样限制bing的使用?
限制Bing的使用有两种解决方式:
第一种: 通过bing提供的web master tools工具设置。
注册好,认证完网站后, 可在左侧配置菜单中选择“爬网控件”进行配置。
限制Bing搜索引擎抓取频率,降低服务器负载,设置好时区, 然后拖动时间条进行管理。 非常方便。
第二种,这种方式比较暴力, 直接控制robots.txt文件进行控制。
可以在robots.txt里面增加crawl-delay 这个参数。
User-agent: bingbot
Crawl-delay: 1
上面的代码代表bingbot限制抓取频率为慢。
如果不设置Crawl-delay就代表由搜索引擎自己决定抓取频率。这个值可以设置1、5、10,分别对应慢、非常慢、极慢。
7. 如何建一个手机独立站?
要建立一个手机独立站,你需要进行以下步骤:
1. 选择建站平台:你可以选择开源的CMS系统(如WordPress、Joomla),或者自己搭建Web服务器(如Nginx、Apache),也可以选择使用云服务(如AWS、阿里云)来托管网站。
2. 确定站点主题或目标:你需要考虑独立站的主题或目标是什么,例如是个人博客、商业网站、新闻聚合站等。
3. 设计页面:你需要根据站点主题或目标设计页面,包括选定合适的模板、配色方案等。
4. 编写内容:你需要编写站点内容,包括文本、图片、视频等。
5. 优化SEO:你需要考虑SEO(搜索引擎优化),优化页面标题和关键字,并创建sitemap.xml和robots.txt等文件,在搜索引擎中为你的站点建立爬行和索引规则。
6. 优化用户体验:你需要考虑用户体验,确保站点易用、易导航、易阅读。
7. 测试和发布:在上线前进行测试,并进行流量测试。
以上这些步骤都需要有一定的技术水平和经验,如果你不具备相关技能,可以找专业的建站公司或服务来帮助你完成。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!
1. robots.txt,飞鱼crm是什么?
飞鱼crm系统是巨量引擎推出的一款为广告主搭建高效的客户管理系统,涵盖完整的金融贷款前后台服务,具有丰富的系统管理功能和基础管理功能。
通过连接广告投放与线索数据,深度挖掘线索背后的价值,降低广告主的线索处理成本、优化广告投放效果与进行客户再营销建设,从而提高达到广告主的企业营销效率与ROI(投资回报率)的结果。
2. 如何才能成为一名爬虫工程师?
一、爬虫工程师是干嘛的?
1.主要工作内容?
互联网是由一个一个的超链接组成的,从一个网页的链接可以跳到另一个网页,在新的网页里,又有很多链接。理论上讲,从任何一个网页开始,不断点开链接、链接的网页的链接,就可以走遍整个互联网!这个过程是不是像蜘蛛沿着网一样爬?这也是“爬虫”名字的由来。
作为爬虫工程师,就是要写出一些能够沿着网爬的”蜘蛛“程序,保存下来获得的信息。一般来说,需要爬出来的信息都是结构化的,如果不是结构化的,那么也就没什么意义了(百分之八十的数据是非结构化的)。爬虫的规模可达可小,小到可以爬取豆瓣的top 250电影,定时爬取一个星期的天气预报等。大到可以爬取整个互联网的网页(例如google)。下面这些,我认为都可以叫做爬虫:
1.爬知乎的作者和回答
2.爬百度网盘的资源,存到数据库中(当然,只是保存资源的链接和标题),然后制作一个网盘的搜索引擎
3.同上,种子网站的搜索引擎也是这样的
到这里,我们知道爬虫的任务是获取数据。现在比较流行大数据,从互联网方面讲,数据可以分成两种,一种是用户产生的(UGC),第二种就是通过一些手段获得的,通常就是爬虫。爬虫又不仅仅局限于从网页中获得数据,也可以从app抓包等。简而言之,就是聚合数据并让他们结构化。那么,哪些工作需要爬虫呢?
2.爬虫能做什么?
典型的数据聚合类的网站都需要爬虫。比如Google搜索引擎。Google能在几毫秒之内提供给你包含某些关键字的页面,肯定不是实时给你去找网页的,而是提前抓好,保存在他们自己的数据库里(那他们的数据库得多大呀)。所以种子搜索引擎,网盘搜索引擎,Resillio key引擎等都是用爬虫实现抓好数据放在数据库里的。
另外有一些提供信息对比的网站,比如比价类的网站,就是通过爬虫抓取不同购物网站商品的价格,然后将各个购物网站的价格展示在网站上。购物网站的价格时时都在变,但是比价网站抓到的数据不会删除,所以可以提供价格走势,这是购物网站不会提供的信息。
除此之外,个人还可以用爬虫做一些好玩的事情。比如我们想看大量的图片,可以写一个爬虫批量下载下来,不必一个一个点击保存,还要忍受网站的广告了;比如我们想备份自己的资料,例如保存下来我们在豆瓣发布过的所有的广播,可以使用爬虫将自己发布的内容全部抓下来,这样即使一些网站没有提供备份服务,我们也可以自己丰衣足食。
二、爬虫工程师需要掌握哪些技能?
我见过这样的说法:“爬虫是低级、重复性很多的工作,没有发展前途”。这是误解。首先,对于程序员来说基本上不存在重复性的工作,任何重复劳动都可以通过程序自动解决。例如博主之前要抓十几个相似度很高但是html结构不太一样的网站,我就写了一个简单的代码生成器,从爬虫代码到单元测试代码都可以自动生成,只要对应html结构稍微修改一下就行了。所以我认为,重复性的劳动在编程方面来说基本上是不存在的,如果你认为自己做的工作是重复性的,说明你比较勤快,不愿意去偷懒。而我还认为,勤快的程序员不是好程序员。下面我根据自己这段时间的工作经历,讲一讲爬虫需要哪些相关的技能。
1.基本的编码基础(至少一门编程语言)
这个对于任何编程工作来说都是必须的。基础的数据结构你得会吧。数据名字和值得对应(字典),对一些url进行处理(列表)等等。事实上,掌握的越牢固越好,爬虫并不是一个简单的工作,也并不比其他工作对编程语言的要求更高。熟悉你用的编程语言,熟悉相关的框架和库永远是百益无害。
我主要用Python,用Java写爬虫的也有,理论上讲任何语言都可以写爬虫的,不过最好选择一门相关的库多,开发迅速的语言。用C语言写肯定是自找苦吃了。
2.任务队列
当爬虫任务很大的时候,写一个程序跑下来是不合适的:
1.如果中间遇到错误停掉,重头再来?这不科学
2.我怎么知道程序在哪里失败了?任务和任务之间不应该相互影响
3.如果我有两台机器怎么分工?
所以我们需要一种任务队列,它的作用是:讲计划抓取的网页都放到任务队列里面去。然后worker从队列中拿出来一个一个执行,如果一个失败,记录一下,然后执行下一个。这样,worker就可以一个接一个地执行下去。也增加了扩展性,几亿个任务放在队列里也没问题,有需要可以增加worker,就像多一双亏筷子吃饭一样。
常用的任务队列有kafka,beanstalkd,celery等。
3.数据库
这个不用讲了,数据保存肯定要会数据库的。不过有时候一些小数据也可以保存成json或者csv等。我有时想抓一些图片就直接按照文件夹保存文件。
推荐使用NoSQL的数据库,比如mongodb,因为爬虫抓到的数据一般是都字段-值得对应,有些字段有的网站有有的网站没有,mongo在这方面比较灵活,况且爬虫爬到的数据关系非常非常弱,很少会用到表与表的关系。
4.HTTP知识
HTTP知识是必备技能。因为要爬的是网页,所以必须要了解网页啊。
首先html文档的解析方法要懂,比如子节点父节点,属性这些。我们看到的网页是五彩斑斓的,只不过是被浏览器处理了而已,原始的网页是由很多标签组成的。处理最好使用html的解析器,如果自己用正则匹配的话坑会很多。我个人非常喜欢xpath,跨语言,表达比价好,但是也有缺点,正则、逻辑判断有点别扭。
HTTP协议要理解。HTTP协议本身是无状态的,那么“登录”是怎么实现的?这就要求去了解一下session和cookies了。GET方法和POST方法的区别(事实上除了字面意思不一样没有任何区别)。
浏览器要熟练。爬虫的过程其实是模拟人类去浏览器数据的过程。所以浏览器是怎么访问一个网站的,你要学会去观察,怎么观察呢?Developer Tools!Chrome的Developer Tools提供了访问网站的一切信息。从traffic可以看到所有发出去的请求。copy as curl功能可以给你生成和浏览器请求完全一致的curl请求!我写一个爬虫的一般流程是这样的,先用浏览器访问,然后copy as curl看看有哪些header,cookies,然后用代码模拟出来这个请求,最后处理请求的结果保存下来。
5.运维
这个话题要说的有很多,实际工作中运维和开发的时间差不多甚至更多一些。维护已经在工作的爬虫是一个繁重的工作。随着工作时间增加,一般我们都会学着让写出来的爬虫更好维护一些。比如爬虫的日志系统,数据量的统计等。将爬虫工程师和运维分开也不太合理,因为如果一个爬虫不工作了,那原因可能是要抓的网页更新了结构,也有可能出现在系统上,也有可能是当初开发爬虫的时候没发现反扒策略,上线之后出问题了,也可能是对方网站发现了你是爬虫把你封杀了,所以一般来说开发爬虫要兼顾运维。
所以爬虫的运维我可以提供下面几个思路:
首先,从数据增量监控。定向爬虫(指的是只针对一个网站的爬虫)比较容易,一段时间之后对一些网站的数据增量会有一个大体的了解。经常看看这些数据的增加趋势是否是正常就可以了(Grafana)。非定向爬虫的数据增量不是很稳定,一般看机器的网络状况,网站的更新情况等(这方面我的经验不多)。
然后看爬虫执行的成功情况。在上面提到了用任务队列控制爬虫工作,这样解耦可以带来很多好处,其中一个就是可以就是可以对一次爬虫执行进行日志。可以在每次爬虫任务执行的时候,将执行的时间、状态、目标url、异常等放入一个日志系统(比如kibana),然后通过一个可视化的手段可以清晰地看到爬虫的失败率。
爬虫抛出的Exception。几乎所有的项目都会用到错误日志收集(Sentry),这里需要注意的一点是,忽略正常的异常(比如Connection错误,锁冲突等),否则的话你会被这些错误淹没。
三、爬虫与反爬
这同样是很深的一个话题,就像攻击武器与防御武器一样,双方总是在不断升级。常见的反爬措施(我遇到过的)有下面几种:
1.访问频率
很好理解,如果访问太频繁网站可能针对你的ip封锁一段时间,这和防DDoS的原理一样。对于爬虫来说,碰到这样的限制一下任务的频率就可以了,可以尽量让爬虫想人类一样访问网页(比如随机sleep一段时间,如果每隔3s访问一次网站很显然不是正常人的行为)。
2.登录限制
也比较常见。不过公开信息的网站一般不会有这个限制,这样让用户也麻烦了。其实反爬措施都或多或少的影响真实用户,反爬越严格,误杀用户的可能性也越高。对爬虫来说,登录同样可以通过模拟登录的方式解决,加个cookie就行了(话又说回来,网络的原理很重要)。
3.通过Header封杀
一般浏览器访问网站会有header,比如Safari或者Chrome等等,还有操作系统信息。如果使用程序访问并不会有这样的header。破解也很简单,访问的时候加上header就行。
4.JavaScript脚本动态获取网站数据
有一些网站(尤其是单页面网站)的内容并不是通过服务器直接返回的,而是服务器只返回一个客户端JavaScript程序,然后JavaScript获取内容。更高级的是,JavaScript在本地计算一个token,然后拿这个token来进行AJAX获取内容。而本地的JavaScript又是经过代码混淆和加密的,这样我们做爬虫的通过看源代码几乎不可能模拟出来这个请求(主要是token不可能破解),但是我们可以从另一个角度:headless的浏览器,也就是我们直接运行这个客户端程序,这可以100%地模拟真实用户!
5.验证码
这几乎是终极武器了,验证码是专门用来区分人和计算机的手段。对于反爬方来说,这种方式对真实用户和搜索引擎(其实可以通过记录搜索引擎爬虫的ip来区别对待,可以解决)的危害比较大,相信读者都有输入验证码的痛苦经历。但这种方法也并不是无敌的!通过现在很火的机器学习可以轻松的识别大部分的验证码!Google的reCAPTCHA是一种非常高级的验证码,但是听过通过模拟浏览器也是可以破解的。
6.ip限制
网站可能将识别的ip永久封杀,这种方式需要的人力比较大,而且误伤用户的代价也很高。但是破解办法却非常简单。目前代理池几乎是搞爬虫的标配了,甚至还有很多高匿代理等好用的东西。所以这基本上只能杀杀小爬虫。
7.网站内容反爬
有一些网站将网站内容用只有人类可以接收的形式来呈现(其实反爬就是区别对待人类和机器嘛)。比如将内容用图片的形式显示。但是近几年来人类和机器的差别越来越小,图片可以用OCR准确率非常高地去识别。
反爬总结
爬虫和反爬是典型的攻防双方的互相升级。但是我认为,这种升级不像军事,军事是无尽头的,但是爬虫和反爬是有尽头的。
爬虫的尽头就是浏览器,一旦使用浏览器,程序完全可以模拟真实用户发出请求,缺点是就是消耗资源,因为需要新开一个进程,解析DOM,运行客户端JavaScript代码。(chrome的node api在github开源仅仅两天,就拿到8k个star)
反爬的尽头就是像Google这种超级厉害的验证码,毕竟验证码的根本目的就是识别人类和机器的。
我正好有一个反爬做的非常好的例子。Google Arts Project项目是一个汇聚世界名画的艺术长廊,我比较喜欢里面的一些画,所以想下载一些(当然这是不对的),然后发现这个网站反爬做的相当好(因为版权属于收藏作品的博物馆,所以Google Arts Project肯定不会提供下载),要下载几乎是不可能的。我有点不服,开始用各种手段试图下载原图。尝试了一番,发现这个网站block掉了鼠标右键功能、审查元素发现图片并不是一个常规的图片、追踪网络包发现原图竟然不是一次网络请求拿到的,而是分成了好几次请求base64编码的字符流每次请求图片的一部分,然后在客户端组装起来图片!当然在客户端的代码也是经过加密和混淆的!这完全可以作为反爬的教科书了,既没有误伤用户,又让爬虫无法下手。
图片每次只请求部分
四、职业道德
成规模的爬虫一般都会使用集群,一般的小网站服务器规模可能不如爬虫集群的规模大。所以很多时候我们最好对要爬的网站限制一下频率。否则这些爬虫就相当于DoS攻击集群了!一般的网站都会有robots.txt可以参考。
好了,总结来说,写爬虫需要经验积累,需要灵活的思路。比如说我之前就遇到过网站,需要验证码验证拿到一个token,可是通过看网络请求发现这个token长得很像一个时间戳,然后本地自己生成一个时间戳发现也是能用的!于是就这样绕过了验证码。所以多多积累和尝试,可以偷不少懒,嘿嘿。
另外爬虫也不是和我之前想的那样是一个枯燥无味的工作,比如我就发现了不少很垃圾,很搞笑的网站,乐趣也蛮多的。学到的东西也不少。万变不离其宗嘛。
3. wordpress插件推荐?
WordPress是一款功能强大的博客系统,拥有丰富的插件资源,以下是一些推荐的WordPress插件:
- Yoast SEO插件:主要用于优化网站,其主要功能包括网站的SEO标题、网站的路径链接以及网站的关键词描述,同时也可以对网站进行分析,并为用户提供改进的意见。
- WooCommerce插件:可以用来创建商城并出售产品,有很多的免费或收费扩展程序,如果想利用WordPress博客程序搭建电子商务网站,可以选择WooCommerce插件。
- Slider Revolution插件:可以实现网站的滚动页面和动态框架,能够有效改善网站的框架布局。该插件还具有附加选项,可以通过拖拉页面编辑器来简化操作流程,让网站页面设置更加简单化,同时也让WordPress博客网页看起来更加美观。
- Akismet插件:可以过滤垃圾评论,帮助用户管理网站,并过滤一些敏感信息。对于热度比较高且评论比较多的WordPress博客网站来说,使用Akismet插件非常有必要。
- XML Sitemap插件:能够自动生成网站的sitemap.xml和robots.txt文件,这些文件对SEO优化非常有帮助,并可以提交给搜索引擎,以确保搜索引擎不会遗漏网站上更新的文章内容。如果网站文章收录效果比较差,那么XML Sitemap插件就是必备神器了。
- Jetpack插件:提供了一整套基于模块逐个激活的功能,包括联系表单、用户互动、网站备份等安全功能,目前使用的用户占很大比例。使用 Jetpack插件可以为网站的文件和数据带来多一份安全保障。
这些插件都有不同的功能和特点,你可以根据自己的需求选择适合的插件来增强你的WordPress博客网站。
4. 这个robots是什么意思?
当一个搜索蜘蛛访问网站时,首先访问根目录WWW下是否存在robots.txt,若存在,搜索机器人就会按照该文件中的内容来确定访问的范围。
01-认识robots.txt(1)robots.txt是搜索引擎访问网站时查看的第一个文件,决定着蜘蛛能或不能访问。
(2)若存在robots.txt文件,蜘蛛会按照该文件来确定访问的范围;若不存在,所有的搜索蜘蛛将能够访问网站上所有页面。
(3)robots.txt必须放在一个站点的根目录下,且文件名必须全部小写(真实的服务器就使用ftp上传)。
(4)建议就算允许所抓取所有内容,也要建一个空的robots.txt文件。
(5)可将sitemap网站地图放置robots.txt文件(地图写法:http://abc.com/sitemap.html)。
02-robots.txt的写法(1)允许所有搜索引擎访问网站所有内容
User-agent: *
Disallow:
(2)禁止所有搜索引擎访问网站所有内容
User-agent: *
Disallow: /
(3)只允许百度搜索引擎抓取
User-agent: Baiduspider
Disallow: /
(4)如果我们禁止除百度外的一切搜索引擎索引
User-agent: Baiduspider
Disallow:
robots.txt文件其实就是告诉蜘蛛哪些页面可以抓取,哪些页面不能访问。
5. 想学习人工智能和大数据方面的知识?
我阅读了很多关于人工智能的书籍,并且为了我的最新的著作《Artificial Intelligence in Practice》也进行了研究。当然,这也是因为我觉得这个主题非常吸引人。事实上,我会说我几乎“吞噬”了过去十年中出版的所有的重要的人工智能书。
我对这篇文章的计划是提名一本关于人工智能的最好的书。如果你只能阅读一本书,它应该是哪本书?但是,老实说,要从那么多我喜爱的书籍中挑选出一本还是比较艰难的。所以,我提供给你我喜爱书籍中的前五名。
《第四纪元:智能机器人,计算机和人类的未来》
(《The Fourth Age: Smart Robots, Conscious Computers, and the Future of Humanity》)
Byron Reese,发表于2018年5月
这本引人入胜的书认为人工智能将对人类产生巨大的影响,在某种程度上它将重新定义人类的意义。作为背景,Reese展示了前三个时代,科技重塑了人类,并将人工智能和机器人技术作为第四个转型时代。换句话说,这是一个扣人心弦(并且令人惊讶地乐观)的作品,讲述了我们如何到达今天的状态,以及我们应该如何应对新的时代。
最适合:了解AI对于我们这个物种意味着什么,而不是陷入一个悲观的暗淡的反乌托邦幻想中。
《生命3.0:人工智能时代,人类的进化与重生》
(《Life 3.0: Being Human in the Age of Artificial Intelligence》)
Max Tegmark,发表于2018年7月
这是巴拉克•奥巴马(Barack Obama)最喜爱的2018年书籍之一,被“泰晤士报”和“每日电讯报”评为年度最佳书籍。
在书中,物理学家和宇宙学家Tegmark开始以平易近人的方式将AI神话与现实区分开来。令人印象深刻的是,他设法涵盖了一些非常具有挑战性的话题和问题(我们如何通过自动化创造一个更加繁荣的世界?我们如何保护人工智能系统免受黑客攻击和恶意使用?)却没有表现得过于高深或过于简单化,当然,也没有告诉读者他的想法。
最适合:促进有关人工智能的富有挑战性、发人深省的对话,无论你是想给人们留下深刻印象还是引发一些严肃的人工智能战略讨论。
《未来简史》
(《Homo Deus: A Brief History of Tomorrow》)
Yuval Noah Harari,2017年3月出版
在他探索人类如何进化的深受欢迎的《人类简史》(《Sapiens》)之后,Harari展望了不远的未来,看看人类的将面临的是什么。人造生命只是这个设想世界的一部分,Harari还探索了一系列其他挑战,包括永生。如果你曾对《人类简史》很感兴趣,那么,作为后续的《未来简史》也值得一读。
最适合:将自然科学与激发围绕人类身份的哲学问题相结合。绝对是一个让你觉得更聪明!
人类简史TXT下载 链接:https://share.weiyun.com/e8802262a40150a8aacfcf5e4d3d09b2 (密码:k2M2)
未来简史TXT下载 链接:https://share.weiyun.com/ac80237ca87f9f3272a4d8b0cf6586d9 (密码:fVfn)
《人工智能超级大国:中国、硅谷和新世界秩序》
由李开复于2019年1月出版
在我最近读过的一本书中(撰写本文时),李开复认为,由于中国在这一领域的惊人增长,它现在可以与美国的AI技术相媲美。对于这两个超级大国,以及世界其他地区,这意味着巨大的商业和社会变革将以超乎任何人想象的速度冲击我们。
如果全球政治真的不是你的事情,那就不要拖延了。 李开复描绘了一幅非常清晰的画面,说明这种日益增长的人工智能竞争对于人们的工作意味着什么
最适合:了解哪些工作(蓝领和白领)最有可能受到AI的影响,以及哪些工作可以通过AI加强。
《人+机器:畅想人工智能时代的工作》
(《Human + Machine: Reimagining Work in the Age of AI》)
由Paul Daugherty和H. James Wilson于2018年3月出版
Daugherty和Wilson是埃森哲的首席技术和创新官以及IT和商业研究的常务董事,这本书关注人工智能的商业影响,或者更具体地说,是公司如何使用人工智能进行创新和发展。
本书的关键是,AI不会触及任何业务流程。在所有业务领域,人类和智能机器正在更紧密地合作,并改变公司的运营方式。实际上,作者提出了六种混合的“人机+机器”角色,他们认为每个企业都必须将这个落实到位。
最适合:为希望利用AI革命的商业领袖提供实用蓝图。
6. 怎么样限制bing的使用?
限制Bing的使用有两种解决方式:
第一种: 通过bing提供的web master tools工具设置。
注册好,认证完网站后, 可在左侧配置菜单中选择“爬网控件”进行配置。
限制Bing搜索引擎抓取频率,降低服务器负载,设置好时区, 然后拖动时间条进行管理。 非常方便。
第二种,这种方式比较暴力, 直接控制robots.txt文件进行控制。
可以在robots.txt里面增加crawl-delay 这个参数。
User-agent: bingbot
Crawl-delay: 1
上面的代码代表bingbot限制抓取频率为慢。
如果不设置Crawl-delay就代表由搜索引擎自己决定抓取频率。这个值可以设置1、5、10,分别对应慢、非常慢、极慢。
7. 如何建一个手机独立站?
要建立一个手机独立站,你需要进行以下步骤:
1. 选择建站平台:你可以选择开源的CMS系统(如WordPress、Joomla),或者自己搭建Web服务器(如Nginx、Apache),也可以选择使用云服务(如AWS、阿里云)来托管网站。
2. 确定站点主题或目标:你需要考虑独立站的主题或目标是什么,例如是个人博客、商业网站、新闻聚合站等。
3. 设计页面:你需要根据站点主题或目标设计页面,包括选定合适的模板、配色方案等。
4. 编写内容:你需要编写站点内容,包括文本、图片、视频等。
5. 优化SEO:你需要考虑SEO(搜索引擎优化),优化页面标题和关键字,并创建sitemap.xml和robots.txt等文件,在搜索引擎中为你的站点建立爬行和索引规则。
6. 优化用户体验:你需要考虑用户体验,确保站点易用、易导航、易阅读。
7. 测试和发布:在上线前进行测试,并进行流量测试。
以上这些步骤都需要有一定的技术水平和经验,如果你不具备相关技能,可以找专业的建站公司或服务来帮助你完成。
本站涵盖的内容、图片、视频等数据系网络收集,部分未能与原作者取得联系。若涉及版权问题,请联系我们删除!联系邮箱:ynstorm@foxmail.com 谢谢支持!