【问题标题】:How to integrate python with a Xamarin Android App for web-scraping如何将 python 与 Xamarin Android 应用程序集成以进行网络抓取
【发布时间】:2020-01-19 03:47:26
【问题描述】:

我和一个朋友有一个想法要构建某种网络抓取软件,最终我们选择了一款移动应用 (Android)。主要思想是:我们为用户提供音乐节列表,用户选择一个,当他选择时,显示该音乐节当前已确认艺术家的列表(我们希望它显示最新列表)。该列表是通过 python 脚本检索的(请注意,目标不是部署或利润(至少现在是这样),因此这是非常概括的解释)。

我的问题是,我将如何将 python 脚本与移动应用程序集成?目前我知道您可以使用 C# 调用它们,但我不确定这是否适用于移动环境。另外,我看到有人说应该将脚本托管在 Web 服务器上,然后通过 API 调用执行它们,但该人没有扩展,我不知道该怎么做。

对此事的任何见解或有用的参考资料都会有所帮助。 谢谢!

【问题讨论】:

  • 在应用程序中抓取信息似乎是一件非常不寻常且困难的事情,尤其是因为如果他们抓取的网站发生变化,脚本将需要调整。如果你有一个服务器,它可以完成所有的抓取,并以你的应用理解的格式提供你的应用需要的信息。您可以在 DigitalOcean 等网站廉价地获得虚拟服务器。即使是最便宜和最低规格的也可能就足够了
  • @jdoer1997 是的,我知道这个想法的风险,但同样,它只是为了好玩和实验。该应用程序主要供我们自己使用,我们相信,由于网站的性质,它们的结构将在很长一段时间内保持不变。感谢您的提示!

标签: c# python xamarin web-scraping mobile


【解决方案1】:

您可以使用 HttpClient 和 HtmlAgilityPack 在 C# 中执行此操作; 你需要:

using System.Net.Http;
using HtmlAgilityPack;

制作这样的方法:

public static HtmlNode GetNodeById(HttpClient client, string url, string divId)
{
    string pageHtml = "";
    using (HttpResponseMessage response = client.GetAsync(url).Result)
    {
        using (HttpContent content = response.Content)
        {
            pageHtml =  content.ReadAsStringAsync().Result;
        }
    }

    var doc = new HtmlDocument();
    doc.LoadHtml(pageHtml);
    HtmlNode node = doc.GetElementbyId(divId);
    return node;
}

并像这样调用(其中“musiciansDiv”是包含您的应用所需信息的 div):

static HttpClient client = new HttpClient();
var musicians = GetNodeById(client, "http://gigs.example.com", "musiciansDiv");

【讨论】:

    猜你喜欢
    • 2023-01-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2020-04-18
    • 1970-01-01
    相关资源
    最近更新 更多