gpt4 book ai didi

c# - 在 webclient 中获取通过 AJAX 生成的 html

转载 作者:行者123 更新时间:2023-11-30 17:22:04 25 4
gpt4 key购买 nike

我经常去某个网站查找资料。我心想:“等一下。我会编程。当我可以编写一个软件来为我做这件事时,为什么我还要手动访问这个站点?”。

于是我开始了。我正在使用 C#,所以我找到了 WebClient 和 Uri。

我已经设法获得该站点的源代码,但出现问题,我要查找的特定数据是在加载源代码后通过 AJAX 生成的。

这就是我的问题。如果需要先通过 AJAX 调用请求该代码,我该如何获取该代码?

最佳答案

一般的做法是这样的:

  1. 使用类似 Fiddler 的工具,找出浏览器发出了哪些 HTTP 请求以获取您要查找的数据。
  2. 使用WebClient获取您需要的 HTTP 请求。

看看我对 this question 的回答有关 HTML 屏幕抓取的更多信息,了解更多详细信息以及如何解决您可能遇到的各种问题。

对于上面的#1,下面是如何使用 fiddler 来理解特定请求是如何发出的:

首先,找到您关心的请求(在其响应中包含您想要的数据的请求)。您可以通过在 fiddler 的左 Pane 中双击每个请求并在右下 Pane 的“ TextView ”选项卡中查看来检查每个请求。您还可以使用 CTRL+F 在多个请求中查找内容,但有些请求是压缩的,因此您需要确保在发出请求之前在工具栏中选择了“自动解码”按钮,如果您想确保可以发短信-搜索所有这些。

找到所需的请求后,在 Fiddler 中双击它并选择右上 Pane 中的“ header ”选项卡。这些是正在发送的 header 。如果您的客户端将这些 header 准确地发送到服务器,您应该返回相同的数据。但通常并非所有标题都需要,因此您需要弄清楚哪些是需要的。您可以使用右上 Pane 中的 Fiddler 的 Request Builder 选项卡执行此操作。选择该选项卡并将您的数据请求从左侧 Pane 拖到请求构建器上。然后提交请求以验证它是否返回正确的结果。然后开始删除 header ,一次一个 header ,直到请求停止工作——您知道该 header 是必需的。尝试删除每个 header ,直到找到所需的 header 。

然后,您需要编写代码来生成正确的 header 。不要担心 Host: header ,它会自动为您生成。对于 Cookie: header ,您需要使用 CookieContainer 类生成它。对于其他 header (例如 UserAgent:、Accept: 等,您通常可以复制它们并将它们按原样添加到您的请求中。

关于c# - 在 webclient 中获取通过 AJAX 生成的 html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2950821/

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