C#从url获取html。错误(429)未知

C#从url获取html。错误(429)未知,c#,httpwebrequest,httpwebresponse,C#,Httpwebrequest,Httpwebresponse,我使用以下代码从url检索html代码。对于url来说,它可以正常工作,例如: 但是,不适用于下一个,返回一个错误作为 “远程服务器返回错误:(429)未知。”“ 错误可能是什么,或者如何获取有关错误的更多信息 private void getHtmlFromUrl() { string urlAddress = "https://trends.google.es/trends/explore?q=test&geo=US"; HttpWebR

我使用以下代码从url检索html代码。对于url来说,它可以正常工作,例如:

  • 但是,不适用于下一个,返回一个错误作为
“远程服务器返回错误:(429)未知。”“

错误可能是什么,或者如何获取有关错误的更多信息

private void getHtmlFromUrl() {

    string urlAddress = "https://trends.google.es/trends/explore?q=test&geo=US";

    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();

    if (response.StatusCode == HttpStatusCode.OK)
    {
        Stream receiveStream = response.GetResponseStream();
        StreamReader readStream = null;

        if (String.IsNullOrWhiteSpace(response.CharacterSet))
            readStream = new StreamReader(receiveStream);
        else
            readStream = new StreamReader(receiveStream, Encoding.GetEncoding(response.CharacterSet));

        string htmlData = readStream.ReadToEnd();

        response.Close();
        readStream.Close();
    }

}

如果没有API,就无法获得google服务的源代码,因为当您仅访问trends.google.es/trends/explore?q=test时,trends服务会发出许多调用,因此出现错误429

不要浪费时间去挖掘代理、浏览器仿真或机器人——这些都不管用。最好的方法是使用

示例项目:

(已弃用)

(已弃用)

新解决方案

(我们安装python,然后将py脚本转换为exe文件,以便从.net代码中使用。好消息是此方法不需要api)

1-安装Python:

2-使用以下方式安装:

3-创建test.py并添加对参数的支持:

from pytrends.request import TrendReq
import sys

# Only need to run this once, the rest of requests will use the same session.
pytrend = TrendReq()
# Set your region
pytrend.geo = 'ES'
pytrend.build_payload(kw_list=[sys.argv[1]]) # Also supports an array of keywords e.g. kw_list=['test', 'music']
related_queries_dict = pytrend.related_queries()
print(related_queries_dict)
#Check the documentation for other available queries https://github.com/GeneralMills/pytrends#api-methods
现在,如果您在test.py的同一位置使用cmd.exe(不使用PowerShell命令),请使用以下命令:

test.py test
截图结果

4-现在让我们将test.py转换为.exe(windows控制台文件)

(a) 安装Pyinstaller:

pip install pyinstaller
(b) 将test.py编译为test.exe

pyinstaller test.py -F
5-您的“test.exe”位于\dist\目录中。让我们看看它是否有效:

是的。 (请记住,test.exe的文件大小为80 mb,因为它使用了许多库。)

现在您所要做的就是处理。启动带有参数“test”的“test.exe”文件名以读取csharp应用程序的输出

您可以使用IronPython通过 您的csharp代码


从URL中删除“q=test&”。为什么“test”是我用来解释问题的关键字。如果你在浏览器中打开url,你会看到它是validNope,它表示你发送了太多的请求(这就是我们所知道的),然后删除它(原因是429)。顺便说一句(不相关),你没有处理任何一次性物品。URL中问号后面的任何东西都是参数(一个键列表,参数之间有一个角叉)。必须对服务器进行编程,以接受每个钥匙。您的网页是否知道“测试”键的用途?@jdweng,是的,尝试将url打开到浏览器中。参数正常,就是这样。。。所以我不想使用API,但这个API是为node设计的。有C#中的例子吗?thanks@JaumeMb更新了链接。最后第一个项目链接缺少“s”。我完成了对提供的示例的测试,第一个示例与我发布的代码相同,并且还得到一个429未知错误。第二个示例已弃用。@Jaume用我自己测试的解决方案更新了答案。很好的方法!!非常感谢。
pyinstaller test.py -F