如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件

Posted

技术标签:

【中文标题】如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件【英文标题】:How to Save Html data from a website to a text file using Xamarin forms and C# 【发布时间】:2021-12-04 11:19:18 【问题描述】:

我正在使用 C# 和 Xamarin 表单来创建一个电话应用程序,该应用程序(当按下按钮时)将从网站中提取特定的 html 数据并将其保存到文本文件中(程序可以稍后再次读取) .我从这个视频中的教程开始:https://www.youtube.com/watch?v=zvp7wvbyceo 如果你想看看我是从什么开始的,这是我到目前为止使用这个视频https://www.youtube.com/watch?v=wwPx8QJn9Kk 制作的代码,在创建的“AboutViewModel.cs”文件中视频:

Image link because this is a new account i guess and i cant embed images or something

粘贴代码本身(但图像可以让您更好地了解所有内容):

    private Task WebScraper()
    
        HtmlAgilityPack.HtmlWeb web = new HtmlAgilityPack.HtmlWeb();
        HtmlAgilityPack.HtmlDocument doc = web.Load("https://www.flightview.com/airport/DAB-Daytona_Beach-FL/");
        foreach (var item in doc.DocumentNode.SelectNodes("//td[@class='c1']"))
        
            var itemstring = item;
            File.WriteAllText("AirportData.txt", itemstring);
        

        return Task.CompletedTask;
    

    public ICommand OpenWebCommand  get; 
    public ICommand WebScraperCommand  get; 

我现在遇到的唯一错误是“无法将 'HtmlAgilityPack.HtmlNode' 转换为 'string'” 我正在努力修复它,但我认为这不是最好的解决方案,所以你拥有的任何东西都是有用的.谢谢:)

【问题讨论】:

【参考方案1】:

HtmlNode 是一个对象,而不是一个简单的字符串。您可能想使用 OuterHtml 属性,但请查阅文档以查看这是否适合您的用例

string output = string.Empty;

foreach (var item in doc.DocumentNode.SelectNodes("//td[@class='c1']"))

    output += item.OuterHtml;


File.WriteAllText("AirportData.txt", output);

注意,你需要指定一个可写文件夹的路径,应用的根文件夹是不可写的。见https://docs.microsoft.com/en-us/xamarin/xamarin-forms/data-cloud/data/files?tabs=windows

【讨论】:

这消除了代码中的错误,但是当单击按钮时,我得到了这个: System.NullReferenceException Message=Object reference not set to an instance of an object。我会继续研究它,看看我是否也能解决这个问题。 您需要确定我们是哪一行导致了异常(堆栈跟踪应该向您显示这一点),然后找出哪个项目为空

以上是关于如何使用 Xamarin 表单和 C# 将 Html 数据从网站保存到文本文件的主要内容,如果未能解决你的问题,请参考以下文章

Xamarin 表单将 Json 数组转换为 C# 并返回 JSON 数组

如何使用 xamarin 表单将经度和纬度设置为图片?

Xamarin 表单和 EntityFramework 属性兼容性

将 xamarin 表单与 IServiceProvider 一起使用

如何将 android 活动导航到 xamarin 表单

如何将 Forms.Image 中的最终照片保存到 xamarin 表单中的本地