如何从使用动态Javascript的远程URL获取页面元素?

如何从使用动态Javascript的远程URL获取页面元素?,javascript,php,curl,Javascript,Php,Curl,我试图从Target之类的网站上解析出一些产品信息,但他们使用javascipt动态构建页面,我通过cUrl接收的html与最终代码非常不同。当我查看源代码时,它与cUrl接收到的内容相匹配,但是当我使用document inspector时,我会看到一个基本正常的页面,其中包含图像、H1标记等等,这正是我需要抓取和解析的内容。有没有办法在JS运行后下拉页面的外观 澄清一下,我不是在清理这些网站。我只是有一个bookmarklet,它将用户正在查看的项目添加到愿望列表中。我想得到的唯一信息是产品

我试图从Target之类的网站上解析出一些产品信息,但他们使用javascipt动态构建页面,我通过cUrl接收的html与最终代码非常不同。当我查看源代码时,它与cUrl接收到的内容相匹配,但是当我使用document inspector时,我会看到一个基本正常的页面,其中包含图像、H1标记等等,这正是我需要抓取和解析的内容。有没有办法在JS运行后下拉页面的外观


澄清一下,我不是在清理这些网站。我只是有一个bookmarklet,它将用户正在查看的项目添加到愿望列表中。我想得到的唯一信息是产品名称、描述,最好是图片。只有当我的网站的用户正在浏览并单击bookmarklet时,才会发生这种情况

你搞错了

抓取站点不是可靠的数据源。像Target这样的大型零售商都有API,您可以使用这些API获取产品信息。他们想让你知道这些信息。没有理由去偷它

谷歌为其他人服务


然而,为了回答您的实际问题,如果您想在Javascript更改DOM后刮取一个站点,您可以使用无头浏览器,比如在网站上运行代码,然后刮取它,或者如果这是供个人使用的,则只需一次

编辑

在看到您的编辑之后,我收集到您的bookmarklet向您的服务器发送了一个AJAX请求,其中包含他们正在查看的URL,此时您可以使用PHP对页面进行卷曲,并将其刮取为产品信息(顺便说一句,刮取是一个正确的术语)。如果情况不是这样,请把你的问题说清楚。你解释得越清楚,我们就越少假设


如果这个假设是正确的,那么您应该解析bookmarklet代码中的数据并将其发送回服务器,而不是url。Javascript比PHP更适合抓取页面,因为它节省了冗余的HTTP调用。在我看来,jQuery特别有用,我写这篇文章是为了生成包含jQuery的bookmarklet,也许它会对您有所帮助。

您做错了

抓取站点不是可靠的数据源。像Target这样的大型零售商都有API,您可以使用这些API获取产品信息。他们想让你知道这些信息。没有理由去偷它

谷歌为其他人服务


然而,为了回答您的实际问题,如果您想在Javascript更改DOM后刮取一个站点,您可以使用无头浏览器,比如在网站上运行代码,然后刮取它,或者如果这是供个人使用的,则只需一次

编辑

在看到您的编辑之后,我收集到您的bookmarklet向您的服务器发送了一个AJAX请求,其中包含他们正在查看的URL,此时您可以使用PHP对页面进行卷曲,并将其刮取为产品信息(顺便说一句,刮取是一个正确的术语)。如果情况不是这样,请把你的问题说清楚。你解释得越清楚,我们就越少假设


如果这个假设是正确的,那么您应该解析bookmarklet代码中的数据并将其发送回服务器,而不是url。Javascript比PHP更适合抓取页面,因为它节省了冗余的HTTP调用。在我看来,jQuery特别有用,我写这篇文章是为了生成包含jQuery的bookmarklet,也许这对你会有帮助。

也许他们不希望你窃取这些内容?如果你想“在JS运行后下拉页面”,你需要运行javascript,然后才解析页面。嘘,为什么每个人都认为他/她试图“窃取”内容?可能是非法或禁止使用的复制品“使用数据提取、刮取、挖掘或其他数据收集工具,或通过系统下载或存储网站内容来创建数据库,或以其他方式刮取、收集、存储或使用任何内容、产品列表、说明、价格或图像,除非根据本条款和条件授予的有限许可证;“也许他们不想让你窃取这些内容?如果你想“在JS运行后拉下页面的样子”,你需要运行javascript,然后再解析页面。Sheesh,为什么每个人都认为他/她试图“窃取”内容?可能重复非法或禁止使用“利用数据提取、刮取、,挖掘或其他数据收集工具,或通过系统下载或存储网站内容创建数据库,或以其他方式收集、存储或使用任何内容、产品列表、说明、价格或图像,除非根据本条款和条件授予的有限许可证;“API理念是卓越的,尽管它不适用于所有网站,也不适用于没有API的网页。使用书签本身查找数据并将其发送回的理念是完美的。总之,这正是我所需要的!谢谢!API理念是卓越的,尽管它不适用于所有网站,也不适用于那些我没有API。使用bookmarklet本身查找数据并将其发送回的想法非常完美。总之,这正是我所需要的!谢谢!