我经常去一个网站看东西。我心想:“等等。我可以编程。为什么我可以手动编写一个软件来手动访问这个网站?”。
所以我开始了。我正在使用C#,所以我找到了WebClient和Uri。
我已经设法获取该网站的源代码,但问题是我在寻找的具体数据是在源代码加载后通过AJAX生成的。
这就是我的问题。如果需要首先通过AJAX调用请求代码,我该如何获得该代码?
答案 0 :(得分:2)
一般方法是:
请查看我对this question的回答,了解有关HTML屏幕抓取的详细信息,以获取更多详细信息以及如何解决可能遇到的各种问题。
对于上面的#1,以下是如何使用fiddler来了解特定请求的执行方式:
首先,找到您关心的请求(包含您在响应中需要的数据的请求)。您可以通过在fiddler的左窗格中双击它并查看右下方窗格中的“text fiew”选项卡来检查每个请求来执行此操作。您还可以使用CTRL + F查找多个请求中的内容,但某些请求已被压缩,因此您需要确保在发出请求之前在工具栏中选择“自动编码”按钮,如果您想确定可以发送文本 - 搜索所有这些。
找到所需的请求后,在Fiddler中双击它,然后在右上方的窗格中选择“标题”标签。这些是发送的标题。如果您的客户端将这些标头正好发送到服务器,您应该返回相同的数据。但通常不需要所有标题,因此您需要确定需要哪些标题。您可以使用右上方窗格中的Fiddler的Request Builder选项卡执行此操作。选择该选项卡,然后将数据请求从左窗格拖到请求构建器上。然后提交请求以验证它是否返回正确的结果。然后开始一次删除标题,一个标题,直到请求停止工作 - 您知道该标题是必需的。尝试删除每个标题,直到找到所需的标题。
然后,您需要编写代码来生成正确的标头。不要担心为您自动生成的Host:
标题。对于Cookie:
标头,您需要使用CookieContainer
类生成它。对于其他标题(例如UserAgent:,接受:等等,您通常可以复制它们并按原样将它们添加到您的请求中。