Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PHP从远程站点抓取时遵循Javascript链接_Php_Javascript_Screen Scraping - Fatal编程技术网

使用PHP从远程站点抓取时遵循Javascript链接

使用PHP从远程站点抓取时遵循Javascript链接,php,javascript,screen-scraping,Php,Javascript,Screen Scraping,给定远程页面: 它使用Javascript函数调用来显示多页表格数据: javascript:显示页面(1) javascript:显示页面(2) 等等。用户单击页面链接以显示每个页面,这会触发重新加载,但没有查询字符串,即URI保持不变 在抓取此站点时,有一种获取后续页面的方法会很有用,但没有明显的方法在请求中指定页码(传递到文件\u get\u contents()) 有没有办法: 打开一个远程网址 在该地址调用已知的javascript函数 返回结果 在PHP中模拟JS将是一条艰难的道路

给定远程页面:

它使用Javascript函数调用来显示多页表格数据:

javascript:显示页面(1) javascript:显示页面(2)

等等。用户单击页面链接以显示每个页面,这会触发重新加载,但没有查询字符串,即URI保持不变

在抓取此站点时,有一种获取后续页面的方法会很有用,但没有明显的方法在请求中指定页码(传递到文件\u get\u contents())

有没有办法:

  • 打开一个远程网址
  • 在该地址调用已知的javascript函数
  • 返回结果

  • 在PHP中模拟JS将是一条艰难的道路。更容易分析JS源代码并确定后台AJAX操作的URL目标。然后,通过调用URL并根据需要修改参数将整个数据集拉入PHP脚本应该是一项相当简单的任务。

    您最好尝试对其PHP脚本的javascript函数/ajax调用进行反向工程,以便使用正确的参数对其服务器执行您自己的请求


    你可以使用许多firefox插件来让你的生活更轻松地扭转这一切(例如,通过查看网络活动查看firebug)

    如果JS中嵌入了firefox插件,你能找到页面的来源吗?找到源代码并直接从中获取内容。不幸的是,附加数据不在第一页的源代码中。我只能假设每个页面都有一个数据库请求,因为点击JS链接会导致页面重新加载。。。Javascript必须以某种方式将消息发送到服务器,当您发现它是如何做到的时候,就模仿它。还有一种方法,因为Javascript不能直接与服务器对话。找到show_page()函数的定义(很可能在外部Javascript文件中)并模拟其行为。你的链接对我来说是404。此外,example.com上的robots.txt似乎禁止机器人进入整个站点,因此确保您的程序尊重您要从example.com上获取的站点上的robots.txt文件是一个由来已久的示例URL。它是按预定的。它用于演示而不是实际的站点。事实证明,它是我不熟悉的ASP.NET功能。一旦我了解了它是如何工作的,我就能够使用libCurl来提交POST数据来模拟它的行为。谢谢大家!