小编典典

获取通过WebClient中的AJAX生成的html

ajax

我经常去一个网站查找东西。我对自己心想:“继续。我可以编程。当我可以编写一个可以为我做的软件时,为什么要手动进入该站点?”。

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

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

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


阅读 298

收藏
2020-07-26

共1个答案

小编典典

通用方法是这样的:

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

请查看我对这个问题的回答,以获取有关HTML屏幕抓取的更多信息,以获取更多详细信息以及如何解决可能遇到的各种问题。

对于上述#1,以下是使用提琴手了解如何发出特定请求的方法:

首先,找到您关心的请求(该请求包含响应中所需的数据)。您可以通过在提琴手的左窗格中双击每个请求并在右下方窗格中的“ text
fiew”选项卡内部进行检查来检查每个请求。您也可以使用CTRL +
F在多个请求中查找内容,但是某些请求已压缩,因此,如果要确保可以通过短信发送以下信息,则在确定请求之前,请确保在工具栏中选择了“自动解码”按钮。搜索所有这些。

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

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

2020-07-26