2016-04-13 10 views
1

次のコードは、入力されたサイトのソースをスクラップします。同じことをしたいのですが、プロキシがユーザーによって入力されています。プロキシを使用してウェブページデータをスクラップ

Console.WriteLine("Enter path"); 
string fileName = Console.ReadLine(); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

if (response.StatusCode == HttpStatusCode.OK) 
{ 
    Console.WriteLine("Page OK"); 
    Stream receiveStream = response.GetResponseStream(); 
    StreamReader readStream = null; 

    if (response.CharacterSet == null) 
    { 
     readStream = new StreamReader(receiveStream); 
    } 
    else 
    { 
     readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet)); 
    } 

    string data = readStream.ReadToEnd(); 


    response.Close(); 
    readStream.Close(); 
    Console.WriteLine(data); 

    System.IO.File.WriteAllText(@fileName, data); 

私は、次のコードを試してみました - しかし、私はエラーを取得:System.UriFormatException

Console.WriteLine("proxy ip:"); 
string proxyip = Console.ReadLine(); 
Console.WriteLine("port"); 
string proxyport = Console.ReadLine(); 
string proxyaddress = (proxyip + ":" + proxyport); 
HttpWebRequest requestproxy = (HttpWebRequest)WebRequest.Create("url"); 
WebProxy myproxy = new WebProxy(proxyaddress, false); 
requestproxy.Proxy = myproxy; 
HttpWebResponse responseproxy = (HttpWebResponse)requestproxy.GetResponse(); 
Console.WriteLine("file path:"); 
string fileName = Console.ReadLine(); 

if (responseproxy.StatusCode == HttpStatusCode.OK) 
{ 
    Console.WriteLine("Page OK"); 
    Stream receiveStream = responseproxy.GetResponseStream(); 
    StreamReader readStream = null; 

    if (responseproxy.CharacterSet == null) 
    { 
     readStream = new StreamReader(receiveStream); 
    } 
    else 
    { 
     readStream = new StreamReader(receiveStream, Encoding.GetEncoding(responseproxy.CharacterSet)); 
    } 

    string data = readStream.ReadToEnd(); 

    responseproxy.Close(); 
    readStream.Close(); 
    Console.WriteLine(data); 
    System.IO.File.WriteAllText(@fileName, data); 

は、上記のコードが間違っていますか?

答えて

0

が必要になります。

HttpWebRequestの要求=(HttpWebRequestの)WebRequest.Create(urlAddressを)。

第2の例では、「url」をurlAddress文字列に変更するのを忘れました。

HttpWebRequest requestproxy =(HttpWebRequest)WebRequest.Create( "url");

これにより、System.UriFormatExceptionエラーが発生します。

関連する問題