我正在尝试从像Target这样的网上商店解析一些产品信息,但他们正在使用javascipt动态构建他们的页面,而我通过cUrl收到的html与最终代码非常不同。当我查看源代码时,它与我用cUrl收到的内容相匹配,但是当我使用文档检查器时,我看到一个带有图像的大部分正常页面,H1标签等,这是我需要能够抓取和解析的内容。有没有办法在JS运行后拉下页面的样子?
澄清一下,我不是在抓这些网站。我只有一个书签,将用户正在查看的项目添加到心愿单。我想要获得的唯一信息是产品标题,描述,最好是图像。仅当我的网站用户正在浏览并单击书签时才会出现这种情况。
答案 0 :(得分:2)
你错了。
抓取网站不是一个可靠的数据源。 Target等主要零售商都拥有可用于获取产品信息的API。他们希望您拥有此信息。没理由试图偷走它。
Google for others。
但是,要回答您的实际问题,如果您想在Javascript更改DOM后抓取网站,您可以使用像PhantomJS这样的无头浏览器在网站上运行代码然后抓取它,或者如果这是供个人使用,userscript可能就足够了。
修改强>
在看到您的编辑后,我收集到您的bookmarklet向您的服务器发送一个AJAX请求,其中包含他们正在查看的URL,此时您使用PHP查找该页面并抓取它以获取产品信息(抓取是正确的术语)那BTW)。如果不是这种情况,请让您的问题更清晰。你解释得越少越好。
如果这个假设是准确的,那么你应该解析bookmarklet代码中的数据并将其发送回服务器而不是/除了url。 Javascript比PHP更适合抓取页面,因为它可以节省冗余的HTTP调用。 IMO,jQuery特别有用,我写了this little script来生成包含jQuery的bookmarklet,也许对你有所帮助。