乙隻垂直的小爬蟲

2022-01-10 21:29:57 字數 2757 閱讀 3511

這只垂直的小爬蟲,使用如下實現

實現的思路很簡單,我從主函式開始簡單敘述一下整個執行流程,第一步:收集需要爬取的url位址,容器我選擇的是concurrentlinkedqueue非阻塞佇列,它底層使用unsafe實現,要的就是它執行緒安全的特性

主函式**如下:

static string url = "";

// 新增url任務

public static concurrentlinkedqueueadd( concurrentlinkedqueuequeue)

return queue;

}public static void main(string args) throws ioexception

第二步:把url列表丟執行緒池:

我使用的執行緒池是newcachedthreadpool根據提交的任務數,動態分配執行緒

/**

* @author: changwu

* @date: 2019/3/24 11:13

*/public class downloadhtml

解析rooturl,目的是拿到新聞主頁的url,因為新聞的正文,在那裡面,邊解析遍封裝rootbean

/**

* 解析源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;

}

類似,處理二級任務,這裡使用到了正規表示式,原來沒好好學,今天用的時候,完全蒙,還好慢慢悠悠整出來了,這塊這要是觀察源html,根據特性,使用jsoup提供的選擇器選擇,剪下,拼接出我們想要的內容,然後封裝

為啥說是垂直的小爬蟲,它只適合爬取我學校新聞,看下面的**,沒辦法,只能拼湊剪下,最坑的是,100條新聞中,99條標題放在裡面,總有那麼一條放在了裡面, 這個時候,就不得不去改剛才寫好的規則

/**

* 解析封裝二級任務

** @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;

}}

持久化,使用的是底冊的jdbc

/**

* 持久化單個pojo

* @param pojo

*/public static void insertonepojo(pojobean pojo) throws classnotfoundexception, sqlexception

拿到的新的url稱作是二級

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 ...