各大招聘網站資訊實時查詢瀏覽

農碼一生發表於2015-03-26

      最近聽得較多的跳槽、面試之類的,相信很多園友也開始蠢蠢欲動了,有的甚至早已經開始了。最近我也在琢磨著換工作的事。說得俗套點,人在外面不就為了那麼點工資麼。現在找工作大部分都是通過在網上投簡歷,然後等電話 通知面試的。然,現在的招聘網站也是比較多。一個一個的在各大網站切換的流量招聘資訊 實屬麻煩。之前看到過一篇博文。《找工作神器,提取各大網站有效的招聘資訊(前程無憂、智聯招聘、獵聘網)》感覺這想法挺好的。把各大網站資訊集中起來瀏覽,第一省了來回切換,第二還不容易重複投簡歷。本想拿來用用的,無奈沒有提供原始碼下載,且是客戶端版本。於是就只能自己動手,豐衣足食了~。(網站就是強大,可以大家一起分享●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   演示地址  原始碼下載  (原始碼都下了 順手點個讚唄~)

下一篇:各大招聘網站資訊實時查詢瀏覽【二】

 

相關文章