C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: AmazonでISBNからタイトルを取得したいです。


(過去ログ 63 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■36493 / inTopicNo.1)  AmazonでISBNからタイトルを取得したいです。
  
□投稿者/ アマゾン (1回)-(2009/05/29(Fri) 20:21:41)

分類:[C#] 

こんにちは。

<span id="btAsinTitle" style="font-weight:bold;">われらの父の父 (単行本)</span>
のようになっていて、
http://support.microsoft.com/kb/301101/ja
を参考に、次のようにしてみました。
コンパイルは通るのですが、起動してもなにも処理されないようです。
アドバイスお願いします。

using System;
using System.Text;
using System.Windows.Forms;
using System.Xml; 

namespace DOMKB
{
    public partial class Form1 : Form
    {
        string workData;
        public Form1()
        {
            InitializeComponent();

            XmlDocument myXmlDocument = new XmlDocument();
            myXmlDocument.Load("http://www.amazon.co.jp/dp/4140053364");
            XmlNode node;
            node = myXmlDocument.DocumentElement;

            if (node != null)
                Format(node);

            if (node.HasChildNodes)
            {
                node = node.FirstChild;
                while (node != null)
                {
                    node = node.NextSibling;
                }
            }
        }

        private void Format(XmlNode node)
        {
            if (!node.HasChildNodes)
            {
                MessageBox.Show("\t" + node.Name + "<" + node.Value + ">");
                workData = workData + "\t" + node.Name + "<" + node.Value + ">";
            }
            else
            {
                if (XmlNodeType.Element == node.NodeType)
                {
                    XmlNamedNodeMap map = node.Attributes;
                    foreach (XmlNode attrnode in map)
                        workData = workData + " " + attrnode.Name + "<" + attrnode.Value + "> ";                        
                }
                MessageBox.Show(workData);
            }
        } 


    }
}

引用返信 編集キー/
■36495 / inTopicNo.2)  Re[1]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ オショウ (202回)-(2009/05/29(Fri) 21:04:26)
> <span id="btAsinTitle" style="font-weight:bold;">われらの父の父 (単行本)</span>
> のようになっていて、

  それは、XML言語ファイルではなくて、HTML言語・・・

  よって、XMLと認識されないので、何も動作しないのでは?

以上。
引用返信 編集キー/
■36496 / inTopicNo.3)  Re[1]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ オショウ (203回)-(2009/05/29(Fri) 21:05:22)
追伸・・・

直接関係ないですが・・・
http://codezine.jp/article/detail/448

こんなものもあります。

以上。
引用返信 編集キー/
■36497 / inTopicNo.4)  Re[2]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ アマゾン (2回)-(2009/05/29(Fri) 21:59:15)
たしかにhtmlですね。
では、htmlをIDでゲットする場合には?
webBrowser.Navigate("http://www.amazon.co.jp/dp/4140053364");
do { Application.DoEvents(); } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);
HtmlElement HE = webBrowser.Document.GetElementById("btAsinTitle");
MessageBox.Show(HE.ToString());
だと、「System.Windows.Forms.HtmlElemonts」が表示されます。

引用返信 編集キー/
■36502 / inTopicNo.5)  Re[1]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ biac (111回)-(2009/05/29(Fri) 23:14:40)
biac さんの Web サイト
> <span id="btAsinTitle" style="font-weight:bold;">われらの父の父 (単行本)</span>
> のようになっていて、

…の 2行が意味不明ですが。 まぁ、 おいといて。 f(^^;

やりたいことは、 どちらでしょう?
・Amazon で ISBN からタイトルを取得したい
・Web ページからデータを取り出したい

前者なら、 Amazon API って Web サービスが公開されてますよ。
http://wiki.makotokw.com/index.php?Memo%2FAmazon%20API


引用返信 編集キー/
■36503 / inTopicNo.6)  Re[2]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ アマゾン (3回)-(2009/05/29(Fri) 23:21:30)
・今回はAmazonでISBNからタイトルを取得したいです。
ただし、
・汎用の方法を覚えて、普通にWebページからデータを取り出せるようになりたいと考えています。

引用返信 編集キー/
■36504 / inTopicNo.7)  Re[3]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ オショウ (204回)-(2009/05/30(Sat) 01:20:53)
> ・汎用の方法を覚えて、普通にWebページからデータを取り出せるようになりたいと考えています。

  http://dobon.net/vb/dotnet/index.html#internet

  ここのHTTPの項が、そのものかと。

以上。参考まで
引用返信 編集キー/
■36506 / inTopicNo.8)  Re[3]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ やじゅ (1019回)-(2009/05/30(Sat) 03:35:58)
やじゅ さんの Web サイト
No36497 (アマゾン さん) に返信
> たしかにhtmlですね。
> では、htmlをIDでゲットする場合には?
> webBrowser.Navigate("http://www.amazon.co.jp/dp/4140053364");
> do { Application.DoEvents(); } while (webBrowser.ReadyState != WebBrowserReadyState.Complete);
> HtmlElement HE = webBrowser.Document.GetElementById("btAsinTitle");
> MessageBox.Show(HE.ToString());
> だと、「System.Windows.Forms.HtmlElemonts」が表示されます。
>

MessageBox.Show(HE.InnerText);

HtmlElement.InnerText プロパティ
http://msdn.microsoft.com/ja-jp/library/system.windows.forms.htmlelement.innertext.aspx
引用返信 編集キー/
■36507 / inTopicNo.9)  Re[4]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ 倉田 有大 (616回)-(2009/05/30(Sat) 05:04:50)
HTML解析だけに、webBrowserコントロールを使いたくないと思うのは俺だけかしら。
HtmlDocument直接使えませんでしたっけ。.Net1.1あたりで、思うように動かずすんごく苦労した記憶がありますが。
引用返信 編集キー/
■36511 / inTopicNo.10)  Re[5]: AmazonでISBNからタイトルを取得したいです。
□投稿者/ biac (112回)-(2009/05/30(Sat) 10:21:19)
biac さんの Web サイト
> HTML解析だけに、webBrowserコントロールを使いたくないと思うのは俺だけかしら。

ですよね。
WebBrowser コントロールは、 たとえ非表示にしていても内部的にレンダリングが完了するまで返ってこないような気がするし。 JavaScript も実行されちゃうしねぇ。

※ 逆に、 JavaScript で動的に生成されている文字列を拾うには、 WebBrowser コントロールに実行させるのが楽なわけか。

そうなると、 WebRequest 使って HTML を取得して、 それを解釈してやりたくなるんですが、 そうするとこんどは、 自前で文字コードをちゃんと変換してやらなきゃいけなくって、 目的のタグをどうにかして見つけ出して、 で、 引っ張り出してみると日本語部分は数値文字参照で書かれていたりして… f(^^;
正当な xhtml で書いてくれてるという保証があるなら、 xml ドキュメントとして扱えるんですけどねぇ。 html や xhtml の文法ミスは、 誰も気にしない世の中になってきてるようで… もはや xhtml の 'x' は、 xml じゃなくて、 謎を表す X なのかもw
xml パーサーを通らないような html でも、 NTidy
http://www.atmarkit.co.jp/fdotnet/dotnettips/760ntidy/ntidy.html
なら、 解釈してくれそうですが、 日本語情報が少なくてね。

# というわけで、 html ページを解釈するコードは、 そこらじゅうで 「車輪の再発明」 が行われている予感 f(^^;

## xhtml 1.0 が出てきたときに、 「ああ、 これで Web ページの解析が簡単・確実にできる世界がくる!」 と喜んだのは、 もはや遠い昔w
## xhtml のページが xml として不正だったらブラウザで表示されなくてあたりまえ、 という世界にならないかぎり、 セマンティック Web なんて夢物語。


> HtmlDocument直接使えませんでしたっけ。.Net1.1あたりで、思うように動かずすんごく苦労した記憶がありますが。

自分では確認してないのですが、 HTMLDocument を単体で生成する方法が無いっぽいですよ。
http://dobon.net/vb/bbs/log3-31/19116.html#ID19122
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -