为什么相同的URL会产生不同的结果?

时间:2018-04-28 05:01:25

标签: web-scraping

在下一页上,底部的数字2,3 ......都指向同一个网址。然而,将显示不同的表格。有谁知道这里使用了哪些具体技术?如何使用原始HTTP请求在这些表中提取信息(我不想使用无头浏览器这样做)?感谢。

https://services27.ieee.org/fellowsdirectory/home.html#results_table

3 个答案:

答案 0 :(得分:1)

使用Javascript(AJAX)对服务器进行HTTP调用。 如果您在开发者工具中检查网络活动,则会看到对以下网址的调用:https://services27.ieee.org/fellowsdirectory/getpageresultsdesk.html

他们从Javascript发送数据:

selectedJSON: {"alpha":"ALL","menu":"ALPHABETICAL","gender":"All","currPageNum":1,"breadCrumbs":[{"breadCrumb":"Alphabetical Listing "}],"helpText":"Click on any of the alphabet letters to view a list of Fellows."}
inputFilterJSON: {"sortOnList":[{"sortByField":"fellow.lastName","sortType":"ASC"}],"typeAhead":false}
pageNum: 2

您可以看到pageNum属性。这就是他们请求特定结果页面的方式。

答案 1 :(得分:1)

当您单击数字按钮时,某些Javascript代码会向https://services27.ieee.org/fellowsdirectory/getpageresultsdesk.html;jsessionid=yoursessionid发出包含pageNum: 3的formData和其他一些格式参数的AJAX POST请求。服务器响应加载到页面中的表行的HTML块。您可以在浏览器的网络检查器(在开发人员工具中)查看该网页上的请求,以确切了解HTTP请求的发生情况。

答案 2 :(得分:1)

该链接有一个onclick处理程序,可以更改href onclick。去 https://services27.ieee.org/fellowsdirectory/home.html#results_table 在控制台中,输入: window.location的= getDetailProfileUrl(' lOH1bDxMyI1CCIxo5ODlGg ==&#39); 这重定向到Jules的Aarons。 现在返回并输入window.location = getDetailProfileUrl(' JJuL3J00kHdIUozoVAgKdg =='); 这打开了Aarts,Ronald。 基本上,当点击链接时,JavaScript会更改链接的URL。

要使用php提取它们,请使用file_get_contents()函数。

echo file_get_contents('https://services27.ieee.org/fellowsdirectory/home.html#results_table');

这将打印出页面。现在用JavaScript抓它。

echo "<script>console.log(document.querySelectorAll('.name'));</script>";

希望这有帮助。