gpt4 book ai didi

python - 从 C# 执行 python 文件时没有输出

转载 作者:行者123 更新时间:2023-12-04 09:35:31 25 4
gpt4 key购买 nike

我用 python 构建了一个 Webscraper,它在执行时生成正确的输出。现在我想将它实现到 C# 项目中,但它不起作用。我只是没有从中得到任何输出。我尝试在不同的步骤中找到将内容打印到标签的问题,但它似乎工作正常。我的 python 代码:

import bs4
import requests
from bs4 import BeautifulSoup

r = requests.get("https://fred.stlouisfed.org/series/AAA")
soup = bs4.BeautifulSoup(r.text,"lxml")
soup_find = soup.find_all("div",{"class":"pull-left meta-col"})[0].find("span",{"class":"series-meta-observation-value"}).text
print(soup_find)

还有我的 C# 代码(在 Visual Studio 中):

        private void cmd_scrape_Click(object sender, EventArgs e)
{
string fileName = @"My\path\to\Webscraper.py";
Process p = new Process();
p.StartInfo = new ProcessStartInfo(@"My\path\to\python.exe", fileName)
{
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true
};
p.Start();
lbl_Out.Text = "Starting...";
string Output = p.StandardOutput.ReadToEnd();
lbl_Out.Text = "Waiting for exit...";
p.WaitForExit();
lbl_Out.Text = "Done";
lbl_Out.Text = Output;
}

最佳答案

我无法直接回答你的问题,因为我没有安装 python,无法重现问题。但我将展示如何使用 C# 完全完成同样的事情。

我假设 C# 项目是 WinForms。

安装 2 个 NuGet 包(在 Visual Studio 菜单项目 -> 管理 Nuget 包中)

  • HtmlAgilityPack
  • Fizzler.Systems.HtmlAgilityPack

第一个提供 HTML 解析器,第二个提供扩展 HtmlNode.QuerySelectorQuerySelector 的查询语法几乎与 JavaScript 中的相同。

安装后将命名空间添加到代码中。

using HtmlAgilityPack;
using HtmlDocument = HtmlAgilityPack.HtmlDocument; // overrides class name conflict with System.Windows.Forms.HtmlDocument
using Fizzler.Systems.HtmlAgilityPack;

以及项目的全部代码

public partial class Form1 : Form
{
private static readonly HttpClient client = new HttpClient();

public Form1()
{
InitializeComponent();
}

private async void button1_Click(object sender, EventArgs e)
{
try
{
label1.Text = "Connecting";
using (HttpResponseMessage response = await client.GetAsync("https://fred.stlouisfed.org/series/AAA", HttpCompletionOption.ResponseHeadersRead))
{
response.EnsureSuccessStatusCode();
label1.Text = "Receiving data";
string text = await response.Content.ReadAsStringAsync();
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(text);
label1.Text = doc.DocumentNode.QuerySelector("div.pull-left.meta-col span.series-meta-observation-value").InnerText;
}
}
catch (Exception ex)
{
label1.Text = "Error";
MessageBox.Show(ex.Message + "\r\n\r\n" + ex.StackTrace);
}
}
}

enter image description here

关于python - 从 C# 执行 python 文件时没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62615247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com