在微信群里又聊到.NET可以救中国然则案例太少不深的问题,我说.NET玩爬虫的确就是宇宙第一,于是大年夜神朱永光说,你为何不来写一篇总结一下?
那么今天就周全的来总结一下,在.NET生态下,若何玩爬虫。
关于爬虫
大年夜搜刮引擎开端,爬虫应当就出现了,爬的对象当瘸就镣是网页URL,在很长一段时光内,爬虫所做的工作就是分析URL、下载WebServer返回的HTML、分析HTML内容、构建HTTP请求的模仿、在爬虫过程中存储有效的信息等等,而伴跟着App的成长以及CS系一切?方法的HTTP化,对办事接口特别是HTTP RESTFul接口的爬虫也开端风行。
爬虫的具体情势,包含模仿浏览器行动和模仿HTTP行动。在爬虫的成长过程中,也出现出无数的对象和说话实践,而今天要说的就是,.NET生态是爬虫最好的伴侣,然则不要误会,我不是针对python,也不是针对nodejs,我是说除了.NET之外,所有玩爬虫的都是垃圾。
一、先谈一谈对于爬虫的懂得
很多人在研究爬虫的初期,热衷于进行浏览器行动的模仿,包含应用一些说话中的WebBrowser控件或者类似PhantomJS如许的无头浏览器,来模仿真实Web行动,进行Dom元素的填写、按钮点击、滚动条操作等等。
固然如许的做法更接近真实场景,但因为浏览器事宜的复杂性,在批量高速的处理场景中,如许的做法稳定程度会大年夜打扣头,我小我异常不赞成如许的理念。
我认为只有大年夜本质上对Web行动进行HTTP的分析,才是关键,任何复杂的浏览器行动,最终都可以精确的拆分为JS逻辑和HTTP行动,所以想要控制好爬虫技巧,对HTTP的懂得和分析至关重要。
二、那么第一个神器就登场了,Fiddler
(http://www.telerik.com/fiddler)
1)HTTP行动捕获。这是根本功能,打开Fiddler后,浏览器或者一般过程有任何通信产生,都邑记录下具体的HTTP要乞降响应。并且根据Content-Type主动显示为具体的内容,当然了,我推荐直接分析RAW信息,直不雅清楚明了也能更深刻的懂得HTTP。本功能常用功能场景有,分析网页行动、分析应用法度榜样行动、手工获取上岸Cookies等。
在做内许可爬虫时,会出现很多对下载后的内容进行处理的场景,重要也就是对文本的处理,这里又一次表现了.NET的优势,包含
2)HTTPS支撑。Fiddler在添加一个本地证书后,可以完全的支撑对HTTPS链接的抓取。
3)手机应用抓包。如今很多手机应用都应用了RESTFul的后端接口,但在手机上抓取的难度和价值都较大年夜,替代的解决筹划是,在Fiddler琅绫擎,开启一个HTTP代劳办事器,并设置端口,当手机的WIFI收集和Fiddler客户端统??同一局域网网段时,设置手机的WIFI收集的代劳地址为Fiddler的HTTP代劳办事器地址,如许手机上任何App的HTTP通信,都邑被Fiddler抓取到。本功能常用功能场景有棘手机App抓包、长途代劳测试等。而这一用法也经常和安卓模仿器进行合营,可以在PC上完成全部手机应用的通信行动的分析。
4)HTTP模仿器。Fiddler内置一个请求构造器(Composer),可以手工构建任何HTTP行动,本功能常用处景有棘手工抓取与爬虫测试。
5)HTTP劫持。Fiddler可以拦截HTTP请求,并响应修改后的数据,这一用法常见于外挂软件的研发过程,在应用时,则多是FiddlerCore库在外挂体系中的应用。这里不得不弥补一句,在这之前,最风行的是winpcap库(或者winpcap库的.NET封装Pcap.Net(https://github.com/PcapDotNet/Pcap.Net)、sharppcap(https://github.com/chmorgan/sharppcap)等),固然winpcap的工作道理使得其应用范围更广,但FiddlerCore无疑已经成为了当前应用端最炙手可热的范畴库。
三、接下来再说一下.NET对HTTP的操控才能
固然不是最早一批出生的嗅探器,但Fiddler得益于.NET框架的强大年夜并且融合了一个基于JScript .NET的子体系,敏捷而周全嗅探的功能快速的获得了市场的承认,积聚了大年夜量用户,而在被.NET控件开辟公司Telerik收购后,成长迅猛,更推出了离开UI的跨平台库FiddlerCore,可以将嗅探行动融入到大年夜型搜刮收集和爬虫体系或者是外挂应用中。
爬虫的重要逻辑部分,等于经由过程法度榜样对HTTP进行操控,包含对目标URL的下载、对模仿HTTP请求的构造。有趣的是,即使只用System.Net下,WebClinet和HttpWebRequest这两个类,就已经可以或许知足99%的爬虫场景。下面列举一些常用的场景
2)其他基于.NET的第三方HTTP库或者有名HTTP的.NET实现。例如RestSharp,EasyHttp,Indy.Sockets等等,这些库对HTTP进行加倍便捷便利的封装,有兴趣的同窗也可以试一试,当然了,在这里我也提一个建议,不要陷溺于对HTTP请求便捷的封装,.NET也不例外,这会让你远离HTTP的本质,对爬虫才能的晋升并无赞助。
1)URL快速下载(上传)。应用WebClinet对URL进行浏览并下载,可以说代码清楚、支撑丰富。包含编码格局、下载格局、异步下载、Form上传、参数拼接等等各类。
2)HTTP请求构造。在很多场景中,须要捏造Referer、UserAgent、ContentType等等,年腋荷琐说话的HTTP库对HTTP协定的支撑细腻程度可以看出其是否亲爬虫,荣幸的是,HttpWebRequest确切足够周全,可以或许知足所有的自定义需求。
推荐阅读
Windows 10突然重启:这样可恢复之前运行的窗口和程序
此后便会弹出体系“启动”文件夹窗口,用户只须要将想主动启动的软件快捷方法拖动到文件夹内便可以实现重启后主动运行。 Windows 10的强迫更新机制已经受到很多用户的诟病,忽然>>>详细阅读
本文标题:关于.NET玩爬虫这些事
地址:http://www.17bianji.com/lsqh/34692.html
1/2 1