iT邦幫忙

0

網頁擷取字串

  • 分享至 

  • xImage

我想請問
如果我只是要單純對網頁做資料比對
判斷是不是有意義
那我該怎麼寫
(我用YAHOO辭典)
例如:搜尋"澎湖"
會顯示"很抱歉,字典找不到您要的資料喔!"
我只要能夠找到這串資料就好
該怎麼做??
用C#寫的~~

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

0
neksterlader
iT邦新手 3 級 ‧ 2010-05-14 14:03:32
最佳解答

SORRY 不是很了解你的比對對象為何
先假設為你的對象是一個網頁好了
簡單的講
將網頁看做是一個字串
既然你使用的是C#
那可以使用REGEX(Regular Expression)
微軟MSDN Regex類別
這屬於.net framework 2.0下的東東
很好用可以讓你篩選與比對
REGEX的功能很強大
MSDN的文件太複雜沒關係
可以參考黑暗執行緒大大寫的文章
這個你就拿去好好琢磨唄
真的不懂再問吧

如果只是要抓這串

tom78310提到:
很抱歉,字典找不到您要的資料喔

(最懶的方法)那直接在Regex.Pattern="很抱歉,字典找不到您要的資料喔"
如果有 IsMatch應該會回傳Ture

直接使用HttpRequest抓取網頁資料
(修正之前講說用WebClient或WebBrowser來抓取)
以下是VB語法的使用範例
記得在FORM1上建立
TextBox -InputWord
Button -Button1
Label -Label_showContext
最後StreamReaderd可以把值讀寫入String當中
妳再拿去解析就好

<pre class="c" name="code">
Sub Button1_Click()
        Dim Word AS string = String.Empty
        Word = InputWord.Text
        Dim UriSource As String = String.Format("http://tw.dictionary.yahoo.com/search?ei=UTF-8&p={0}",Word)
        Dim en As Encoding
        en = Encoding.GetEncoding("UTF-8")\\這要注意一下編碼
        Dim myHttpWebRequest As HttpWebRequest = CType(WebRequest.Create(UriSource), HttpWebRequest)
        Dim myHttpWebResponse As HttpWebResponse = CType(myHttpWebRequest.GetResponse(), HttpWebResponse)


        Dim readStream As New StreamReader(myHttpWebResponse.GetResponseStream(), en)
        Label_showContext.Text = readStream.ReadToEnd()
End Sub
tom78310 iT邦新手 5 級 ‧ 2010-05-14 22:13:24 檢舉

知道方法了~~
但是我只會寫C#
VB我就看不懂了
有C#的寫法嗎????

外獅佬 iT邦大師 1 級 ‧ 2010-05-14 22:24:21 檢舉

轉成 C#...

<pre class="c" name="code">
public void Button1_Click()
{
  string Word = string.Empty;
  Word = InputWord.Text;
  string UriSource = string.Format("http://tw.dictionary.yahoo.com/search?ei=UTF-8&p={0}", Word);
  Encoding en = default(Encoding);
  en = Encoding.GetEncoding("UTF-8");
  HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(UriSource);
  HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();

  StreamReader readStream = new StreamReader(myHttpWebResponse.GetResponseStream(), en);
  Label_showContext.Text = readStream.ReadToEnd();
}
外獅佬 iT邦大師 1 級 ‧ 2010-05-14 22:25:14 檢舉

提供您一個相當實用的工具:VB.NET與C#互轉的工具:
http://www.developerfusion.com/tools/convert/vb-to-csharp/

我要發表回答

立即登入回答