java知乎爬虫代码 java爬虫源码( 二 )


要做搜索引擎Nutch1.x非选择Nutch1.xsolr或者es配合构套非强搜索引擎非要用Nutch2建议等Nutch2.3发布再看目前Nutch2非稳定版本
第二类:JAVA单机爬虫
JAVA爬虫单独类JAVA网络爬虫块态圈非完善相关资料全能争议我随便扯淡
【java知乎爬虫代码 java爬虫源码】其实源网络爬虫(框架)发非简单难问题复杂问题都前解决(比DOM树解析定位、字符集检测、海量URL重)说毫技术含量包括Nutch其实Nutch技术难点发hadoop本身代码非简单网络爬虫某种意义说类似遍历本机文件查找文件信息没任何难度言所选择源爬虫框架省事比爬虫URL管理、线程池类模块谁都能做要做稳定需要段间调试修改
于爬虫功能说用户比较关问题往往:
1)爬虫支持线程、爬虫能用代理、爬虫爬取重复数据、爬虫能爬取JS信息
支持线程、支持代理、能滤重复URL都叫源爬虫叫循环执行http请求
能能爬js信息爬虫本身没太关系爬虫主要负责遍历网站载页面爬js信息网页信息抽取模块关往往需要通模拟浏览器(htmlunit,selenium)完些模拟浏览器往往需要耗费间处理页面所种策略使用些爬虫遍历网站遇需要解析页面网页相关信息提交给模拟浏览器完JS信息抽取
2)爬虫爬取ajax信息
网页些异步加载数据爬取些数据两种:使用模拟浏览器(问题1描述)或者析ajaxhttp请求自ajax请求url获取返数据自ajax请求使用源爬虫意义哪其实要用源爬虫线程池URL管理功能(比断点爬?。?
我已经我所需要ajax请求(列表)何用些爬虫些请求进行爬取
爬虫往往都设计广度遍历或者深度遍历模式遍历静态或者态页面爬取ajax信息属于deep web(深网)范畴虽数爬虫都直接支持通些完比WebCollector使用广度遍历遍历网站爬虫第轮爬取爬取种集合(seeds)所url简单说ajax请求作种放入爬虫用爬虫些种进行深度1广度遍历(默认广度遍历)
3)爬虫爬取要登陆网站
些源爬虫都支持爬取指定cookies模拟登陆主要靠cookies至于cookies获取爬虫管事情手获取、用http请求模拟登陆或者用模拟浏览器自登陆获取cookie
4)爬虫抽取网页信息
源爬虫般都集网页抽取工具主要支持两种规范:CSS SELECTORXPATH至于哪评价
5)爬虫保存网页信息
些爬虫自带模块负责持久化比webmagic模块叫pipeline通简单配置爬虫抽取信息持久化文件、数据库等些爬虫并没直接给用户提供数据持久化模块比crawler4jwebcollector让用户自网页处理模块添加提交数据库操作至于使用pipeline种模块操作数据库使用ORM问题类似取决于业务
6)爬虫网站封办
爬虫网站封般用代理(随机代理)解决些源爬虫般没直接支持随机代理切换所用户往往都需要自获取代理放全局数组自写代理随机获?。ㄊ椋┐?
7)网页调用爬虫
爬虫调用Web服务端调用平用用些爬虫都使用
8)爬虫速度
单机源爬虫速度基本都讲本机网速用极限爬虫速度慢往往用户线程数少、网速慢或者数据持久化数据库交互速度慢些东西往往都用户机器二发代码决定些源爬虫速度都
9)明明代码写爬数据爬虫问题换爬虫能解决
代码写爬数据换其爬虫爬遇种情况要网站封要爬数据javascript爬数据通换爬虫能解决
10)哪爬虫判断网站否爬完、爬虫根据主题进行爬取
爬虫判断网站否爬完能尽能覆盖
至于根据主题爬取爬虫内容爬才知道主题所般都整爬再筛选内容嫌爬太泛通限制URL则等式缩范围
11)哪爬虫设计模式构架比较
设计模式纯属扯淡说软件设计模式都软件发完总结几设计模式设计模式软件发没指导性作用用设计模式设计爬虫使爬虫设计更加臃肿

推荐阅读