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

Demo源碼html

背景json

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

項目結構一覽cookie

  下面是Demo的項目結構圖:異步

運行結果網站

  下面是Demo的運行結果圖:url

思路&問題分析spa

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

總結htm

  本人文筆拙劣,感謝你們的支持。提供源碼,你們分享一下,但願能作一個通用點的系統,只須要輸入網址和一些簡單的規則,就可以獲取咱們所須要的信息。對象

Demo源碼

相關文章
相關標籤/搜索