創建項目並繪制界面
打開Visual Studio並創建一個基於.net 4.5的WPF項目:GetTaoBaoItems
之所以采用4.5是因為后面我們將要用到里面免費的新的異步編程特性.
繪制如下主界面:
下載網頁
我們知道要進行網絡數據采集必不可少就要下載網頁內容,因此我們首先需要構建一個下載網頁內容的函數:
注意using System.Net
我們下載哪個網頁了?
我們可以通過類似網址查看一個店鋪的所有寶貝: [淘寶店鋪地址]/search.htm,如下圖所示:
如上圖紅圈所示,寶貝是分頁顯示的那么第二頁的地址在哪里了?我們選擇第二頁:
我們可以得知第k頁的網址是:
[淘寶店鋪地址]/search.htm?search=y&viewType=grid&orderType=_newOn&pageNum=k#anchor
因此我們就可以得知我們要下載的內容應該是這樣的:
先下載第一頁的內容並獲取紅圈所示的總頁數,然后下載第二頁到最后一頁.
下載第一頁並獲取總頁數
為獲取按鈕添加點擊按鈕事件並在里面添加下載第一頁的內容:
下面我們將要講解我們怎么來獲取頁面總頁數這個數據.
我們這里開始將要用到正則表達式,大家最好先到如下網頁進行一定基礎的了解:
http://www.yesky.com/imagesnew/software/vbscript/html/jsgrpRegExpSyntax.htm
先添加如下引用:
然后在獲取按鈕點擊事件里添加如下代碼:
運行程序並點擊獲取按鈕:
現在將這段代碼重構為函數GetPageCount:
獲取寶貝信息
我們當把某一頁網頁下載回來之后要做的就是對該網頁進行分析,如下代碼所示:
運行一下:
那么下面我們將上面的代碼重構為函數AnalyPages:
運行代碼:
將數據顯示到界面上
我們先添加如下內容來存儲數據:
將其綁定到listbox:
修改之前的函數AnalyPages:
運行程序:
對程序進行異步改造
先將下載網頁的函數修改如下:
修改使用到了此函數的所有函數:
我們還需要對函數AnalyPages進行二次改造因為這里將會下載數百網頁:
我們重構一下循環的內部部分:
改寫下AnalyPages本身:
運行程序:
下篇文章我們將講述如何取消正在運行的異步操作,並且將最終數據導出.
