如何开发网络爬虫?

如何开发网络爬虫?

1,一个问题就是,爬虫是一个什么东西?为什么需要爬虫?

说白了,爬虫就是一个“机器人”。平常,我们从浏览器浏览网站,我们必须一页一页的打开,然后找到我们需要的内容。如果我们想保存网页中内容的话,也只有一页一页的浏览,然后Ctrl+C,再然后Ctrl+V。这样效率就特别慢,如果我们需要下载的东西有几百万的话,这是根本无法完成的了。

怎么办呢?我们能够想到的一个方法,就是,如果我们有一个机器人,伪装成一个浏览器,然后按照我们设定的规则,自动的打开网页,然后自动找到我们的内容,再然后自动的下载保存起来,那么不就OK了?是的,爬虫就是这么干的。

为什么需要那么变态的爬取那么多别人的内容?因为数据,现在是大数据和AI时代,如果做好AI,必须有足够的数据,当然,找到这些数据最好的方法就是采集已有的数据。

2,开发爬虫需要的预备知识

因此,如果你想写爬虫,你首先要对浏览器和服务器的原理要搞懂,否则,你怎么能够模拟一个浏览器机器人的?简单的说,浏览器,就是根据用户的操作,发送一个Request给服务器,服务器接收到这个Request,然后做一个处理,然后把处理的结果Response返回给浏览器,然后浏览器解析和渲染这个Response,呈现用户可见的图形或者文字。
上面只是简单的说,真正展开了,这里的细节非常的多。这么多的工作,就是现在各种网络开发工程师,例如前端工程师和后端工程师等一直在煎熬的事情。
爬虫要做的事情基本就是下面几个:
第一,构造request,然后发送给服务器。
第二,接受到respone,然后解析response,找到自己需要的内容
第三,其它就是一些辅助功能,例如保持数据,保存到数据库等等
嗯,看起来好像非常简单。

3,为什么选择python,框架Scrapy是个什么东西?

我们准备做一个项目,都面临一个语言选择的问题,语言选择一般遵循两种原则:
第一,性能要求,这个是最基本的要求
第二,开发的方便性,这个问题,取决于相关语言提供的内置或者外置的库的多少。
所以,如果就写爬虫而言,python其实并不是唯一的选择,例如C或者Java都可以完成,但是Python却是一个最优的选择,因为很多人都在使用Python做爬虫,也贡献了非常多的爬虫相关的框架和模块。因此,如果你不想重复造轮子的话,使用Python做爬虫是一个非常不错的选择。

框架是一个什么玩意?
如果不是几十年前的老工程师,估计都或多或少的接触框架,php、js、javaEE,等等对于开发网站等经常需要处理的工作,都会有很多流行的框架。所谓的框架,就是把很多工作进行流程化,然后让你需要自己定制的地方去定制,其它工作,框架都帮你写了,你不需要重复写那些所有人都需要写的部分了。就像盖房子,别人把土木,水电,安全等等全部给你搞定了,你所需要做的,就是定制你自己的厨房卫生间卧室等工作而已。Scrapy就是一个爬虫的框架,他把很多流程都固化了,你只要提供你所需要爬的网站地址,然后,就可以拿到respone,分析resopne,怎么保存数据等等,全部帮你搞好框架。
如果没有框架呢?你需要负责跟踪请求和反馈的错综复杂的来往,你不花费巨大的精力和智力,可能无法写一个性能优良的服务前后端程序。
框架就是这样的东西,规范工作流程,不容易犯错误,常用的代码都帮你写好了。

4,深入了解网络请求

开发爬虫的第一步,就是写所谓的请求,也就是就是构造一个类似于浏览器的数据,按照同样的方法发送给服务器,然后就等待接收服务器的返回了。几个问题需要明确:

第一,浏览器有哪些地方会发送请求?

第二,浏览器发送的数据有多少种,格式是什么样子?

关于第一个问题,浏览器有如下几个地方会发送请求:

1)地址栏,这个不要多说了。

2)form表单,就是网页上那种输入账号和密码的那种东西。

3)js语言,其中最著名的就是ajax。

关于第二个问题:

现在浏览器使用RESTful格式的请求,其实就是对于uri的增删改查操作,但是我们一般使用的还是GET和POST的方式最大。get最典型的就是浏览器地址栏发送的请求,而POST典型的就是form表单,而ajax对于GET和POST都有使用。

5,如何解析服务器返回的数据?

获取到response之后,我们接下来的重要任务就是分析其返回的内容了,response主要内容包括html网页(含js代码)和json数据两种类型。

对于html网页,其实非常复杂的,我们怎样从这样复杂的字符串流中找到我们感兴趣的内容呢?我们一般对其中内容文本、图片或者视频,或者引导到另外一个地址的网页链接等感兴趣。怎么找呢?

第一种方法,使用正则的方法,自己从中找到自己感兴趣的内容。哈哈,这很难的。

第二种方法,使用一个第三方工具,所谓的BeautifulSoup,这个工具在使用第三方分析器,把html转化成python的结构化数据,然后,我们可以使用数据结构的导航方法,找到我们感兴趣的内容。

第三种方法,就是直接使用xpath和jsonpath来直接分析返回的html和json数据。

6,js代码怎么处理?

现在浏览器,其实更像一个虚拟的操作系统+CPU,可以执行复杂的js指令。而上面讨论的request和response,都是假定了静态网页的方式,而实际应用中的网页,纯粹静态的很少,更多是动态网页,也就是网页中有交互的js代码,这个js代码根据实际情况,而产生和服务器的交互,决定继续从服务器加载需要的内容。

因此,我们需要模拟js执行的情况,这是一个比较大的问题,chrome的独占鳌头,就是因为它优化了js的执行问题。因此,我们能否直接操纵浏览器,例如chrome来帮我们加载动态页面呢?非常幸运,这个方法是有的,这是从网站自动化测试需求的一个东西,就是所谓的selenium。python支持这个。

python通过安装selenium,然后通过一个浏览器的驱动程序webdriver,进而控制浏览器。

7,爬虫和黑客什么区别和联系?以及爬虫未来的展望

总之,我们通过各种手段,伪造好像真人从服务器去拿数据,但是,很多网站也有使用很多方法去鉴别你是通过爬虫拿数据的,从而不给你数据,或者杀掉你的IP。所以,爬虫开发和反爬虫开发,就像小偷和警察一样的发展。

另外,爬虫开发和黑客什么关系?因为我们的目的是不择手段的去拿去数据,往往也走在了黑客的边缘,因为我们在分析网站的时候,往往会发现网站的漏洞,只是我们不去黑掉网站而已。这也说明了,如果你是一个资深黑客,一定对你开发爬虫有很大的帮助。

可以简单的展望,现在AI这么发达,未来我们其实完全没有必要开发复杂的爬虫,仅仅开发一个AI机器人,模拟人类的操作和保存数据(Ctrl+C和Ctrl+P),这样就行了。估计这样的机器人对于后台反扒工程师,估计更难分辨了。

深圳SEO优化公司吉安网站优化按天扣费价格永州推广网站报价百色网站设计哪家好晋城企业网站设计推荐那曲网页制作价格安阳关键词按天收费多少钱绵阳关键词按天收费价格广安关键词按天扣费遂宁百度竞价包年推广价格塘坑优秀网站设计凉山网络营销杭州网站关键词优化报价六安推广网站九江百度爱采购报价铜仁SEO按天扣费推荐廊坊设计网站多少钱陇南网站优化软件公司双龙网站优化按天收费公司泉州网站排名优化公司岳阳百度竞价包年推广公司淮安网站设计模板报价乐山百姓网标王推广多少钱沙井关键词按天收费价格张北品牌网站设计报价泉州网站优化排名报价玉林seo网站优化价格锦州百度爱采购哪家好邢台关键词排名价格白银网站优化软件公司福州网站优化软件公司歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化