当前位置: 首页 > 面试题库 >

IronPython和BeautifulSoup,win32应用程序

窦宏旷
2023-03-14
问题内容

IronPython和BeautifulSoup一起工作吗?如果是的话,哪个版本的IronPython?使用IronPython(主要是c#调用一些python代码来解析html)在.net
2.0上分发Windows桌面应用程序有多容易?


问题答案:

我一直在问自己同样的问题,在努力遵循这里和其他地方的建议以使IronPython和BeautifulSoup与我现有的代码很好地配合使用后,我决定寻找替代的本机.NET解决方案。BeautifulSoup是一段很棒的代码,起初它看起来似乎没有可与.NET相提并论的东西,但是后来我找到了HTML
Agility
Pack,

并且我认为我确实比BeautifulSoup获得了一些可维护性。它采用干净或简洁的HTML,并从中生成优雅的XML
DOM,可以通过XPath查询。使用几行代码,您甚至可以取回原始XDocument,然后在LINQ to
XML中编写查询。老实说,如果您要进行网络抓取,那么这就是您可能会找到的最干净的解决方案。

编辑

这是一个简单的示例(阅读:一点也不鲁棒),它解析了美国众议院的假期时间表:

using System;
using System.Collections.Generic;
using HtmlAgilityPack;

namespace GovParsingTest
{
    class Program
    {
        static void Main(string[] args)
        {
            HtmlWeb hw = new HtmlWeb();
            string url = @"http://www.house.gov/house/House_Calendar.shtml";
            HtmlDocument doc = hw.Load(url);

            HtmlNode docNode = doc.DocumentNode;
            HtmlNode div = docNode.SelectSingleNode("//div[@id='primary']");
            HtmlNodeCollection tableRows = div.SelectNodes(".//tr");

            foreach (HtmlNode row in tableRows)
            {
                HtmlNodeCollection cells = row.SelectNodes(".//td");
                HtmlNode dateNode = cells[0];
                HtmlNode eventNode = cells[1];

                while (eventNode.HasChildNodes)
                {
                    eventNode = eventNode.FirstChild;
                }

                Console.WriteLine(dateNode.InnerText);
                Console.WriteLine(eventNode.InnerText);
                Console.WriteLine();
            }

            //Console.WriteLine(div.InnerHtml);
            Console.ReadKey();
        }
    }
}


 类似资料:
  • .NET Framework虽然是微软一 手打造的,但却在开源社区频频相见,不能不说是一个奇迹。有人做一些有趣的应用与大家分享,有人则更是把.NET移植到非微软平台(比如著名的MONO和 dotGNU),还有一些人则更为有趣,他们把现有的语言移植到.NET平台上。IronPython就是Python在.NET平台上的实现。 IronPython 是一种在 .NET 及 Mono上的 Python

  • 在Windows 10主页(在x64位)上,我尝试在命令提示符上运行以下命令: 节点索引。js 错误如下: C:\Users\cooldudeasateen\OneDrive\Coding\sil\node\u modules\bindings\bindings。js:121;e^ 错误:\?\C:\Users\cooldudeasateen\OneDrive\Coding\sil\node\u

  • 我在IronPython中有一个“脚本类”,我的应用程序中的脚本通过调用其实例上的方法来工作。我需要从多个线程实现调用脚本。正确的方法是什么? 我有多重担忧: > 如果创建多个ScriptScope,则意味着多次执行相同的初始化脚本。让我们假设我运行了十个Python脚本文件,导入了五个程序集,并且总体上执行了相当多的代码来准备好“脚本对象”。是否有任何方法可以避免为每个线程运行大量相同代码的时间

  • 问题内容: 我试图从带有子进程的python解释器中调用python文件“ hello.py”。但我无法解决此错误。[Python 3.4.1]。 除了使用子过程之外,还有没有其他方法可以“使用参数调用python脚本”?提前致谢。 问题答案: 错误非常明显。该文件不是可执行文件。您需要指定可执行文件: 您需要在搜索路径上可见,或者可以将完整路径传递给运行调用脚本的可执行文件:

  • 我安装了 pip安装wordcloud 然后我导入了 我得到了这个错误:

  • 我想编译我的。将proto文件转换为存根,但在输入命令时: `protoc-I=/原型/虚拟。proto--js\u out=import\u style=commonjs,二进制:/服务器--grpc\U out=/服务器--plugin=protoc gen grpc=哪个grpc\u tools\u node\u protoc\u plugin 我遇到以下错误: 我安装的东西: Window