3

Awesomium を使用して、現在読み込み中のページからコンテンツを取得しようとしています。ただし、ページが XML(RSS) の場合、結果は正しくありません。これは、問題を実証するためのテスト プログラムです。

using System;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using Awesomium.Core;

namespace AwesomiumTest
{
    class Program
    {
        static void Main(string[] args)
        {
            WebCore.Initialize(new WebConfig()
            {
                LogLevel = LogLevel.None
            });

            string result;

            //Example #1
            //ok
            WritePageToConsole("http://www.google.com/");

            //Example #2
            //small problem. Result has added tags and replace from "<" ">" to "&lt;" "&gt;"
            WritePageToConsole("http://social.msdn.microsoft.com/search/es-ES/feed?query=vb&format=RSS");

            //Example #3
            //big problem. Result = 'undefined' !!!!!!!
            WritePageToConsole("http://prmac.com/rss-ct-d.htm");

            Console.ReadKey();
        }

        static void WritePageToConsole(string url)
        {
            using (WebSession session = WebCore.CreateWebSession(new WebPreferences()))
            {
                using (WebView view = WebCore.CreateWebView(1280, 960, session))
                {
                   bool finishedLoading = false;

                    view.LoadingFrameComplete += (s, e) =>
                    {
                        if (e.IsMainFrame)
                            finishedLoading = true;
                    };

                    view.Source = url.ToUri();

                    while (!finishedLoading)
                    {
                        Thread.Sleep(100);
                        WebCore.Update();
                    }

                    string docTagName = view.ExecuteJavascriptWithResult("document.documentElement.tagName").ToString();
                    string outerHTML= view.ExecuteJavascriptWithResult("document.documentElement.outerHTML").ToString();

                    Console.WriteLine("Document tagName: " + docTagName);
                    Console.WriteLine("Part of content: " + outerHTML.Substring(0, Math.Min(300, outerHTML.Length)));
                    Console.WriteLine();
                }
            }
        }
    }
}

コンソールは次のようになります。

例 #1

ドキュメント タグ名: HTML

コンテンツの一部: <html itemscope="" itemtype="http://schema.org/WebPage"><head><meta content="Поиск информации в интернете: веб страницы, картинки, видео и многое другое." name="description"><meta content="noodp" name="robots"><meta itemprop="image" content="/images/google_favicon_128.png"><title>Google</title><scri

例 #2

ドキュメント タグ名: HTML

コンテンツの一部: <html><head></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">&lt;rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"&gt;&lt;channel&gt;&lt;title&gt;Buscar en Msdn&lt;/title&gt;&lt;description&gt;Use Msdn para buscar en la Web.&lt;/description&gt;&lt;item&gt;&lt;link&gt;h

例 #3

ドキュメントのタグ名: rss

内容の一部:未定

例 #2 と #3 でページ コンテンツを取得する正しい方法は何ですか?

4

0 に答える 0