当前位置: 首页 > 面试题库 >

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

尤祖鹤
2023-03-14
问题内容

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

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

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

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


问题答案:

通用方法是这样的:

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

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

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

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

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

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



 类似资料:
  • 问题内容: 我想通过jQuery AJAX拉RSS提要,但每次这样做,都会遇到parsererror。我的提要相对复杂(使用CDATA和自定义名称空间),因此我尝试剥离返回的文档(以及一百万个其他组合),但是即使使用非常简单的文档,它仍然会失败。这是我的AJAX代码: 控制台输出: 问题答案: 确保为文档提供标头为或。

  • 问题内容: 这是我的问题。 我使用FancyBox来显示图像,这些图像是通过AJAX获取的。加载页面时,页面上没有图像,只有具有画廊名称的属性链接。 因此,当我单击以下链接之一处理此代码时: 此解决方案工作正常。但是当我使用 代替 我得到带有响应文本的弹出窗口。 演示版 我做错了什么? fancyBox-jQuery插件 版本:2.0.5(21/02/2012) jQuery 1.7-最新 “ g

  • 问题内容: 我想将页面上的一些数据发送到servlet 所以我写了下面的jQuery来做到这一点 我使用所有数据构建一个json字符串,并将其直接发送到servlet 但是我不知道如何从servlet中的ajax获取全部数据 如果查看来自chrome的请求标头的Form Data段 您会看到整个json字符串是关键。 问题答案: 看这里, 您的归属是错误的。它不应该是字符串,而是真实的JSON对象

  • 关于Spring WebFlow WebClient的小问题,尤其是如何配置一个使用TLSv1.2发送出站请求的问题。 我的应用程序是Spring WebFlow 2.4.2,其中启用了HTTP/2、SSL、mTLS和TLSv1.3。 注意它是TLSv1。3,而不是设置上的TLSv1,2。 创建WebClient实例时: 并使用它向TLSv1发送请求。3启用服务器,工作正常,非常开心。 但是,我需

  • 问题内容: 我正在使用mpdf库生成用户生成的html的PDF。我可以使PDF成功保存到服务器,但是我希望PDF在用户浏览器中打开。我尝试使用mpdf的输出选项在浏览器中打开文件或提示下载,但是当我使用AJAX将html数据发送到脚本时都没有发生。 这是我的AJAX: 这是我的PDF生成脚本: 我正在使用AJAX,因此无需浏览页面即可创建PDF。我的代码中是否有错误,还是应该使用其他方法? 问题答

  • 问题内容: 下面的方法我想同时插入几条记录。 在这一点上,当我希望获得为每个INSERT生成的PK时,就会收到此异常 oracle.jdbc.driver.T4CNumberAccessor.unmarshalOneRow(T4CNumberAccessor.java:250) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:754) at