程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 淺談抓取網頁數據(奉上Demo)

淺談抓取網頁數據(奉上Demo)

編輯:C#入門知識

背景

  曾經在公司做過一個比價系統,就是抓取其它網站上商品的價格並和自己公司的商品進行對應,然後展示出來,給pm提供一個定價的參考。後來,有同事的朋友在找工作的時候,獵頭讓其做一個抓取去哪網最低價機票的程序,然後,我就幫忙整了一下。本文的目的在於提供這個程序的源碼,然後和大家探討一下網頁信息抓取的相關點。Demo使用c#並在vs2012環境下運行。

項目結構一覽

  下面是Demo的項目結構圖:

運行結果

  下面是Demo的運行結果圖:

思路&問題分析

  • 個人以為,網頁信息的獲取分為兩個階段:1 知道目標網頁和相關參數,並獲取網頁的源碼 2 將獲取到的源碼抽取出我們需要的信息,並轉換成c#對象
  • 在Demo中的HttpHelper.cs文件下的類的職責就是設定目標網頁地址和相關參數,該類是在網上找到的,據說可以無視cookie、證書等驗證,很牛,推薦小伙伴們使用,所以,第一個目標是比較容易能夠完成的
  • 難點在於第二個目標,我們如何抓取html源碼(json數據)中的有效信息並轉換成我們需要的c#對象呢?Demo中獲取的是json數據,然後用正則抓出了其中的一部分,再轉換成一個實體類的列表。Demo中的AsyncRegexHelper是異步的正則匹配幫助類,在使用正則匹配的過程中,經常遇到無限回溯的問題,使用這個幫助類可以異步地執行匹配並且有一個超時時間。現在碰到的問題是正則匹配比較不靠譜,難度較大且不易擴展,目前打算想用Html Agility Pack來進行數據的匹配,希望伙伴們能指點下,謝謝大家。

總結

  本人文筆拙劣,感謝大家的支持。提供源碼,大家分享一下,希望能做一個通用點的系統,只需要輸入網址和一些簡單的規則,就能夠獲取我們所需要的信息。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved