這只垂直的小爬蟲,使用如下實現
實現的思路很簡單,我從主函式開始簡單敘述一下整個執行流程,第一步:收集需要爬取的url位址,容器我選擇的是concurrentlinkedqueue非阻塞佇列,它底層使用unsafe實現,要的就是它執行緒安全的特性
主函式**如下:
第二步:把url列表丟執行緒池:static string url = "";
// 新增url任務
public static concurrentlinkedqueueadd( concurrentlinkedqueuequeue)
return queue;
}public static void main(string args) throws ioexception
我使用的執行緒池是newcachedthreadpool根據提交的任務數,動態分配執行緒
解析rooturl,目的是拿到新聞主頁的url,因為新聞的正文,在那裡面,邊解析遍封裝rootbean/**
* @author: changwu
* @date: 2019/3/24 11:13
*/public class downloadhtml
類似,處理二級任務,這裡使用到了正規表示式,原來沒好好學,今天用的時候,完全蒙,還好慢慢悠悠整出來了,這塊這要是觀察源html,根據特性,使用jsoup提供的選擇器選擇,剪下,拼接出我們想要的內容,然後封裝/**
* 解析源html.封裝成一級bean物件並返回
** @param sourcehtml
* @return
*/public static listgetrootbeanlist(string sourcehtml)
}rootbean.settitle(split[0]);
rootbean.seturl(rooturl + href);
rootbeanlist.add(rootbean);
/*system.out.println();
system.out.println(split[0]);
system.out.println();*/
}return rootbeanlist;
}
為啥說是垂直的小爬蟲,它只適合爬取我學校新聞,看下面的**,沒辦法,只能拼湊剪下,最坑的是,100條新聞中,99條標題放在裡面,總有那麼一條放在了裡面, 這個時候,就不得不去改剛才寫好的規則
持久化,使用的是底冊的jdbc/**
* 解析封裝二級任務
** @param htmlsouce
* @return
*/public static listgetpojobeanbyhtmlsource(string htmlsouce, rootbean bean)
// 作者
compile = pattern.compile(regex);
matcher = compile.matcher(text);
string author = null;
if (matcher.find())
// 出處
compile = pattern.compile(regex);
matcher = compile.matcher(text);
string source = null;
if (matcher.find())
// 正文
elements ebody = doc.select(".wp_articlecontent");
string body = ebody.first().text();
// system.out.println(body);
// 封裝
pojobean.setauthor(author);
pojobean.setbody(body);
pojobean.seteditor(editor);
pojobean.setsource(source);
pojobean.seturl(bean.geturl());
pojobean.setposttime(bean.getposttime());
pojobean.settitle(bean.gettitle());
list.add(pojobean);
}return list;
}}
拿到的新的url稱作是二級/**
* 持久化單個pojo
* @param pojo
*/public static void insertonepojo(pojobean pojo) throws classnotfoundexception, sqlexception
public static logger logger = logger.getlogger(tpoolfordownloadrooturl.class);
/***/
public static void downloadroottaskpool(concurrentlinkedqueue queue)
}} catch (ioexception e)
}});
}
乙隻有野心的小爬蟲
這個問題在程式設計師中的爭議很大,這裡不拉開情懷與逼格的爭議。對於大多數人,我的建議是 先暫時使用ide,這可以在學習的過程中讓你的精力主要集中在 的編寫上,對於執行和除錯也非常方便。但是你至少應該會一點vim的基礎操作,這樣可以方便你在伺服器部署 ctrl space 基本的 完成 類 方法 屬性...
乙隻爬蟲的產生
以下環境基於py2.7 爬蟲架構 url管理器 處理待爬url以及爬過的url,防止重複抓取以及死迴圈 網頁解析器 解析出想要的資料,以及捕捉新的url位址交給url管理器進行處理繼續抓取。過濾資料,拿到有價值的資料進行處理。資料的存放 python 的 set集合 可以防止資料的重複 需要長期儲存...
乙隻R語言de爬蟲
該爬蟲爬取得是某地新聞內容 pa1 用於找到href鏈結 pa2 用於根據鏈結找到新聞內容 pa3 用於儲存進資料庫 嘿嘿 爬蟲pa1 library xml 引入xml包 givehref function rootnode givenames function rootnode getpage ...