当前位置:  开发笔记 > 编程语言 > 正文

C#.net使用Console中的HTMLDocument?

如何解决《C#.net使用Console中的HTMLDocument?》经验,为你挑选了1个好方法。

我正在尝试System.Windows.Forms.HTMLDocument在控制台应用程序中使用.首先,这甚至可能吗?如果是这样,我如何将网页从网页加载到其中?我试图使用WebBrowser,但它告诉我:

未处理的异常:System.Threading.ThreadStateException:无法实例化ActiveX控件'885 6f961-340a-11d0-a96b-00c04fd705a2',因为当前的读取不在单线程单元中.

关于该HTMLDocument对象似乎缺乏相关教程(或者谷歌只是提出了无用的结果).


刚刚发现mshtml.HTMLDocument.createDocumentFromUrl,但那引起了我的兴趣

未处理的异常:System.Runtime.InteropServices.COMException(0x80010105):服务器抛出异常.(来自HRESULT的异常:0x80010105(RPC_E_SERVERF AULT))at System.RuntimeType.ForwardCallToInvokeMember(String memberName,BindingFla gs flags,Object target,Int32 [] aWrapperTypes,MessageData&msgData)at mshtml.HTMLDocumentClass.createDocumentFromUrl(String bstrUrl,String bstr Options) at iget.Program.Main(String [] args)

有没有搞错?我想要的只是页面上的标签列表.为什么这么难?


对于那些好奇的人,这是我想出的解决方案,感谢TrueWill:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.IO;
using HtmlAgilityPack;

namespace iget
{
    class Program
    {
        static void Main(string[] args)
        {
            WebClient wc = new WebClient();
            HtmlDocument doc = new HtmlDocument();
            doc.Load(wc.OpenRead("http://google.com"));
            foreach(HtmlNode a in doc.DocumentNode.SelectNodes("//a[@href]"))
            {
                Console.WriteLine(a.Attributes["href"].Value);
            }
        }
    }
}

TrueWill.. 6

作为替代方案,您可以使用免费的Html Agility Pack库.这可以解析HTML并允许您使用LINQ查询它.我在家里使用旧版本的项目,效果很好.

编辑:您可能还想使用WebClient或WebRequest类来下载网页.请参阅我在.NET上进行Web抓取的博客文章.(请注意,我没有在控制台应用程序中尝试过此操作.)



1> TrueWill..:

作为替代方案,您可以使用免费的Html Agility Pack库.这可以解析HTML并允许您使用LINQ查询它.我在家里使用旧版本的项目,效果很好.

编辑:您可能还想使用WebClient或WebRequest类来下载网页.请参阅我在.NET上进行Web抓取的博客文章.(请注意,我没有在控制台应用程序中尝试过此操作.)

推荐阅读
U友50081205_653
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有