2017-04-06 4 views
0

ウェブページのhtmlを取得します。それから、このhtmlにはxpathの2つの要素があります。私はそれを読みたいと思っています。私はこのトピックについてほとんど知識がありません。ウェブページをhtml文書にダウンロードする

検索の際に私は例を見ていますが、URLを読み込んでhtmlを文字列に入れます。しかし、私は2つのxpathを持っているので、私は間違っているか、文字列ではなく、HTMLドキュメントとしてWebページのhtmlをダウンロードするほうがよいでしょうか?

using (WebClient client = new WebClient()) { 
    string s = client.DownloadString(url); 
} 

ウェブページのHTMLを検索できるHTMLドキュメントにダウンロードするにはどうすればよいですか?

+1

の可能性のある重複した[C#でHTMLを解析するための最良の方法は何?](http://stackoverflow.com/questions/56107/what-is-the-best-way-to- parse-html-in-c) – mason

+0

@masonサードパーティのコードを使用せずにこれをやりたいと言っています。私は自分の職場でサードパーティのものをダウンロードできません – mHelpMe

+0

XPathクエリに関する情報を教えてください。 – levent

答えて

-2

あなたはファイルにダウンロードしたデータを書き込むためのStreamWriterを使用することができます。

string s = string.Empty; 
using(WebClient client = new WebClient()) 
{ 
    string s = client.DownloadString(url); 
} 

using (FileStream fs = new FileStream("test.html", FileMode.Create)) 
{ 
    using (StreamWriter w = new StreamWriter(fs, Encoding.UTF8)) 
    { 
    w.WriteLine(s); 
    } 
    } 
+2

あなたはhtmlをファイルにダウンロードする方法を尋ねましたが、外部ライブラリを使わなくても正確な情報を含む私の答えを下落させましたか?本当にクールではない。 –

+0

** WebページのhtmlをHTML文書としてダウンロードするほうがよいでしょう** - 彼はHTML文書をxpathで検索可能な構造化文書として解析する方法を見つけ出す必要があると言います。 https://www.w3schools.com/xml/xpath_intro.asp私はその質問が不十分に策定されていることに同意する。 –

1

これは私がこれを行う方法です。

  1. まず、あなたのURLを文字列変数に定義します。
  2. 次に、HttpWebRequestクラスの文字列をダウンロードします。
  3. 私はHtmlAgilityPackを使用していますので、プロジェクトに含める必要があります(たとえばNuggerを使用)。
  4. オブジェクトを作成してHtmlDocumentを作成し、このオブジェクトにデータをロードします。
  5. HtmlDocumentをナビゲートできます。

    string urlAddress = "url.com"; 
    
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress); 
    HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
    string data = ""; 
    if (response.StatusCode == HttpStatusCode.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)); 
    } 
    
    data = readStream.ReadToEnd(); 
    
    
    response.Close(); 
    readStream.Close(); 
    } 
    
    HtmlDocument document2 = new HtmlAgilityPack.HtmlDocument(); 
    document2.LoadHtml(data); 
    
関連する問題