標籤

more tags...

最新回覆

利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面

網路上有一個有名的snap shots的網站,主要是提供blog外掛超連結預覽的功能

小弟就去網路上找了一下資料,如何利用ASP.NET達到這個功能..

其實主要透過一支win的程式(IECapt)來取得url的畫面就可以做到了...

當然在抓取url的畫面前,可以先用WebRequest的GetResponse來判斷此url是否正常...c#範例

IECapt.aspx

   1:  <%@ Page Language="C#" AutoEventWireup="true" CodeFile="IECapt.aspx.cs" Inherits="IECapt" %>
   2:   
   3:  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
   4:   
   5:  <html xmlns="http://www.w3.org/1999/xhtml" >
   6:  <head runat="server">
   7:      <title>IECapt</title>
   8:  </head>
   9:  <body>
  10:      <form id="form1" runat="server">
  11:      <div>
  12:          <asp:TextBox ID="TextBox1" runat="server" Width="300px">http://blog.blueshop.com.tw/hent/</asp:TextBox>
  13:          <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="取得畫面" />
  14:          <br />
  15:          <asp:Image ID="Image1" runat="server" /></div>
  16:      </form>
  17:  </body>
  18:  </html>

IECapt.aspx.cs

   1:  using System;
   2:  using System.Data;
   3:  using System.Configuration;
   4:  using System.Collections;
   5:  using System.Web;
   6:  using System.Web.Security;
   7:  using System.Web.UI;
   8:  using System.Web.UI.WebControls;
   9:  using System.Web.UI.WebControls.WebParts;
  10:  using System.Web.UI.HtmlControls;
  11:  using System.Diagnostics;
  12:  using System.Net;
  13:   
  14:  public partial class IECapt : System.Web.UI.Page
  15:  {
  16:      //IECapt下載網址,下載後請放在跟此檔案相同位置
  17:      //http://iecapt.sourceforge.net/    
  18:      protected void Page_Load(object sender, EventArgs e)
  19:      {
  20:   
  21:      }
  22:      protected void Button1_Click(object sender, EventArgs e)
  23:      {        
  24:          string URL = this.TextBox1.Text;
  25:          bool Ok  = true;//預設URL的狀態是正常的
  26:          WebRequest request = WebRequest.Create(URL);
  27:          request.Proxy = null;
  28:          try
  29:          {            
  30:              HttpWebResponse response = (HttpWebResponse)request.GetResponse();
  31:              Response.Write("\n Site Exists.");
  32:          }
  33:          catch (Exception exc)
  34:          {
  35:              Response.Write("\n Site does not exists.");
  36:              Ok = false;
  37:          }
  38:   
  39:          //URL是正常運作,才抓取URL畫面
  40:          if (Ok != false)
  41:          {
  42:              Process proc = new Process();
  43:   
  44:              //IECapt.exe path
  45:              proc.StartInfo.FileName = Server.MapPath("~/IECapt.exe");
  46:   
  47:              //將取得的畫面暫存為image.png檔
  48:              proc.StartInfo.Arguments = this.TextBox1.Text + " " + Server.MapPath("~/image.png");
  49:              proc.Start();
  50:   
  51:              //等待IECapt程式執行完畢
  52:              proc.WaitForExit();
  53:   
  54:              this.Image1.ImageUrl = "image.png";
  55:          }
  56:   
  57:      }
  58:  }

執行結果:

IECapt

原始程式碼:IECapt.rar

參考網址:
http://iecapt.sourceforge.net/
http://www.csharpfriends.com/Forums/ShowPost.aspx?PostID=47537
http://www.snap.com/snapshots.php

 
推到 Twitter!
推到 Plurk!


 

2008/3/5 23:05| 閱讀數 : 5449 | 2 人收藏 我要推薦 | 5 Comments | 文章分類 : ASP.NET ASP.NET(Diagnostics) ASP.NET(Net) 訂閱


回覆

# re: 利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面, Posted by Andy on 2009/3/30 下午 04:38  回覆

Puma 你好:
我使用 IECapt.exe 去抓圖都很正常,有一個問題請教,
只要我的 Url 網址後面有帶參數的話,抓圖就會失敗。
請問這要如何處理呢 ?

# re: 利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面, Posted by carrotnet on 2009/5/19 下午 04:07  回覆

proc.StartInfo.Arguments = this.TextBox1.Text + " " + Server.MapPath("~/image.png");
这行这么写有问题 不能带url后参数的 &字符
这样就可以了:
proc.StartInfo.Arguments = "--url=\"" + this.TextBox1.Text + "\" --out=" + Server.MapPath("~/images.png");
命令行下&是会被截断的 所以要用“”双引号引起来

# re: 利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面, Posted by sakaa on 2009/6/3 下午 02:11  回覆

proc.StartInfo.Arguments = "--url=\"" + this.TextBox1.Text + "\" --out=" + Server.MapPath("~/images.png");
請問這段怎麼改成VB的寫法?!我怎麼改都存不出圖片...

# re: 利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面, Posted by Andy on 2009/7/3 上午 11:53  回覆

再請問一下,如果我要抓圖片的網頁,是必須先輸入帳號密碼才能進去的畫面,結果會抓不到耶 ~~~ ,有沒有什麼參數是可以傳入 帳號及 密碼的呢 ??

# re: 利用ASP.NET的WebRequest來判斷URL網址是否正常,並且結合IECapt取得URL的畫面, Posted by puma on 2009/12/7 下午 05:42  回覆

這裡也有一篇不錯的討論

如何將整個網頁的內容存成圖形檔

 

發表回覆

標題: *
姓名: *
Email: (將不會被顯示)
Url:
回覆: *
登入後使用進階評論
Please add 4 and 3 and type the answer here:
F6 Team logo


用BloggerAds 替自已加薪

每月文章

文章分類

推薦討論區

推薦部落格