查找通过AJAX加载的URL

查找通过AJAX加载的URL,ajax,web-scraping,Ajax,Web Scraping,在回答另一个问题时,用户能够找到通过javascript加载的一部分。到目前为止,我无法复制这个简单的壮举:特别是,我查看了页面源代码,但无法找到响应者引用的代码: <script>populator = new Populator({parentId: "profileForm:vanguardFundTabBox:tab0",execOnLoad:true, populatorUrl:"/us/JSP/Funds/VGITab/VGIFundOverviewTabContent

在回答另一个问题时,用户能够找到通过javascript加载的一部分。到目前为止,我无法复制这个简单的壮举:特别是,我查看了页面源代码,但无法找到响应者引用的代码:

<script>populator = new Populator({parentId:
"profileForm:vanguardFundTabBox:tab0",execOnLoad:true,
 populatorUrl:"/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542",
inline:fals   e,type:"once"});
</script>
populator=新的populator({parentId:
“profileForm:vanguardFundTabBox:tab0”,execOnLoad:true,
populatorUrl:“/us/JSP/Funds/VGITab/VGIFundOverviewTabContent.jsf?FundIntExt=INT&FundId=0542”,
内联:fals e,键入:“once”});

我在页面源代码中搜索了JS,JS在页面的HTML文件中本地编写,也在源文件中引用的JS文件中编写。我忽略了什么

TL;DR提到的问答已经有10多年的历史了,自那时起,网站已经发生了变化


你可能会错过一些东西。首先,您提到的堆栈溢出问题已经有10多年的历史了。它所指的页面已经不存在了。如果您使用Chrome或Firefox开发工具,您会注意到请求页面链接会给您一个http 301,表示页面已永久移动,并将您引导到另一个页面,该页面可能与10年前的页面相似。当前版本的页面是使用angular js构建的,2009年还没有广泛使用(事实上,我认为它只是在2009年创建的)。在任何地方都找不到ajax请求的原因是页面不再是这样构造的

您可能仍然可以复制抓取页面的壮举,但现在要困难得多。您必须通过请求和解析现在用于填充页面字段的JSON来完成,例如从
https://api.vanguard.com/rs/ire/01/ind/fund/VWIUX/expense.jsonp?callback=angular.callbacks._w&planId=null
。但是,只有在标题中有正确的cookie等情况下,这才有效


所以好消息是,你没有不遵循答案中给出的方法。坏消息是答案已经过时。

关于一个彻底的解释的一条评论:如果我没有弄错的话,前面答案的JS代码中引用的.jsf页面()仍然存在,并生成相关的(最新的)内容。因此,从您的回答中,我得出结论,.jsf URL不再包含在(现在不存在的)JS代码中,而是在当前版本的页面中的其他地方生成的。这表明,一旦.jsf URL位于新页面中,就应该不难抓取了。这很奇怪。我认为jsf页面不再加载到主页面中;主页似乎是根据通过API获得的json数据逐块构建的。然而,jsf页面似乎是在服务器端构建并一次性交付的。为什么有两种方法显示相同的数据?需要探讨的两个想法是:1)如果您在美国境外,通过VPN使用美国IP是否会有所不同;2)如果您注册了个人帐户,是否会有所不同?