最近聽得較多的跳槽、面試之類的,相信很多園友也開始蠢蠢欲動了,有的甚至早已經開始了。最近我也在琢磨著換工作的事。說得俗套點,人在外面不就為了那麼點工資麼。現在找工作大部分都是通過在網上投簡歷,然後等電話 通知面試的。然,現在的招聘網站也是比較多。一個一個的在各大網站切換的流量招聘資訊 實屬麻煩。之前看到過一篇博文。《找工作神器,提取各大網站有效的招聘資訊(前程無憂、智聯招聘、獵聘網)》感覺這想法挺好的。把各大網站資訊集中起來瀏覽,第一省了來回切換,第二還不容易重複投簡歷。本想拿來用用的,無奈沒有提供原始碼下載,且是客戶端版本。於是就只能自己動手,豐衣足食了~。(網站就是強大,可以大家一起分享●0●^_^)
合併查詢本來就是為了簡單方便,所以也就沒有弄很複雜了,一個頁面搞定。如果同學們有什麼好的想法,可以建議建議。
效果圖:
就一個簡單的關鍵字輸入框、工作地點的選擇和資訊來源網站。
其實看上去很簡單,實現起來也很簡單。~~程式碼不多,難度也很小。很多時候需要的技術不是很多,想法更重要。
不想往下看的可以直接用用 演示地址 ,同學們求工作給推薦推薦,上海 浦東 .net。 私密我,或Q我。
第一、分析url
進入招聘網站的時候url大串大串的,我們需要用的的就三個。搜尋關鍵字、地址和頁碼。
智聯招聘:
http://sou.zhaopin.com/jobs/searchresult.ashx?jl=地址&kw=關鍵字&p=頁碼
jl=地址
kw=關鍵字
p=頁碼
然後地址的話 直接中文地址就ok了
獵聘網:
http://www.liepin.com/zhaopin/?key=關鍵字&dqs=地址&curPage=頁碼
key=關鍵字
dqs=地址
curPage=頁碼
地址有一個對應的編號
("北京", "010");
("上海", "020");
("廣州", "050020");...等等 也是在獵聘網選擇地址的地方右鍵 審查元素可以看到,如下:
前程無憂:
http://search.51job.com/jobsearch/search_result.php?jobarea=地址&keyword=關鍵字&curr_page=頁碼
jobarea=地址 [和獵聘一樣的查詢方法]
keyword=關鍵字
curr_page=頁碼
第二、用到了HtmlAgilityPack.DLL HTML解析元件
在之前我發過的 部落格轉發小工具 有提過HtmlAgilityPack。這裡再簡單的說說用法。
case ZhaopinType.獵聘網: var htmlWeb = new HtmlWeb(); htmlWeb.OverrideEncoding = Encoding.GetEncoding("UTF-8"); HtmlAgilityPack.HtmlDocument response = htmlWeb.Load(url); #region MyRegion var ulS = response.DocumentNode.SelectNodes("//*[@id='sojob']/div[2]/div/div/ul/li"); foreach (var item in ulS) { var xpath = item.XPath; string titleName, infourl, company, city, date, salary, salary_em, source; titleName = item.SelectSingleNode(xpath + "/a").Attributes["title"].Value; infourl = item.SelectSingleNode(xpath + "/a").Attributes["href"].Value; company = item.SelectSingleNode(xpath + "/a/dl/dt[@class='company']").InnerText; city = item.SelectSingleNode(xpath + "/a/dl/dt[@class='city']/span").InnerText; date = item.SelectSingleNode(xpath + "/a/dl/dt[@class='date']/span").InnerText; salary = item.SelectSingleNode(xpath + "/a/dl/dt[@class='salary']/span").InnerText; salary_em = item.SelectSingleNode(xpath + "/a/dl/dt[@class='salary']/em").InnerText; source = "獵聘網"; zpInfoList.Add( new ZhaopinInfo() { city = city, company = company, date = date, info_url = infourl, salary = salary, salary_em = salary_em, titleName = titleName, source = source }); } #endregion break;
1.設定訪問url頁面的編碼
htmlWeb.OverrideEncoding = Encoding.GetEncoding("UTF-8");
設定編碼為UTF-8,具體看對應頁面採用的編碼。
2.元素路徑下的元素集合
var ulS = response.DocumentNode.SelectNodes("//*[@id='sojob']/div[2]/div/div/ul/li");
SelectNodes方法裡面的這串字串怎麼來?
右鍵審查元素 Copy XPath 就ok了。不過如果js有動態修改document樹的話 那麼這個路徑就不準了,需要自己微調下。
3、取標籤的屬性值 Attributes
如:取a標籤的title值。
titleName = item.SelectSingleNode(xpath + "/a").Attributes["title"].Value;
4.取標籤的中間的文字 InnerText
company = item.SelectSingleNode(xpath + "/a/dl/dt[@class='company']").InnerText;
5.過濾選擇特定的id 或 class
XPath 中 標籤名後面加上中括號 和@ 如: "/a/dl/dt[@class='company']"
第三、瀏覽器滾動條的onscroll事件
js獲取滾動條距離瀏覽器頂部,底部的高度,相容ie和firefox
取視窗可視範圍的高度[瀏覽器可見區域高度]
//取視窗可視範圍的高度[瀏覽器可見區域高度] getClientHeight: function () { var clientHeight = 0; if (document.body.clientHeight && document.documentElement.clientHeight) { var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight; } else { var clientHeight = (document.body.clientHeight > document.documentElement.clientHeight) ? document.body.clientHeight : document.documentElement.clientHeight; } return clientHeight; }
取視窗滾動條高度[滾動條距離頂部的高度]
getScrollTop: function () { var scrollTop = 0; if (document.documentElement && document.documentElement.scrollTop) { scrollTop = document.documentElement.scrollTop; } else if (document.body) { scrollTop = document.body.scrollTop; } return scrollTop; }
取文件內容實際高度
getScrollHeight: function () { return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); }
滾動條距離底部的高度
getScrollbheight: function () { return this.getScrollHeight() - this.getScrollTop() - this.getClientHeight(); }
取滾動條距離底部的高度,當滾動條到最底部的時候,通過ajax非同步請求後臺,載入下一頁資料,這樣就可以免了翻頁的麻煩了。
ps:用jquery 更加簡潔(感謝@Samguist)
if ($(window).scrollTop() == $(document).height() - $(window).height()) { // ajax非同步載入資料 }
基本上就是這樣簡單,沒什麼難度。記得有什麼好工作通知一聲哦~^_^ ^_^ ***** 點選本人求職資訊*****
環境:vs2013 資料庫:無 外掛:HtmlAgilityPack 演示地址 原始碼下載 (原始碼都下了 順手點個讚唄~)