我试图解析网站上的一些HTML内容。 Nokogiri第一次为内容加载完美。
现在的问题是如何获取使用AJAX加载的内容。例如,有一个“看到更多”链接,使用AJAX获取更多项目,或考虑基于AJAX的选项卡的案例。
我如何获取该内容?
答案 0 :(得分:3)
您将无法使用Nokogiri解析任何需要JavaScript运行时才能生成该内容的内容。 Nokogiri是一个HTML / XML解析器,而不是Web浏览器。
另一方面,PhantomJS 是一个网络浏览器,虽然是一种特殊的浏览器;)看看它并玩一玩。
答案 1 :(得分:1)
目前还不完全清楚你想做什么,但是如果你想要访问由AJAX加载的其他HTML,那么你需要研究代码,找出用于什么的URL。 AJAX请求,无论是否已设置任何会话ID或cookie,然后创建一个新的URL,以重现AJAX正在使用的内容。请求,然后你应该重新获得新内容。
但是,这可能很难做到。正如@Nuby所说,Mechanize可以提供很好的帮助,因为它旨在为您在后台管理cookie和会话。 Mechanize在内部使用Nokogiri,因此如果您从Mechanize请求页面,您可以使用Nokogiri搜索来深入挖掘并提取任何特定的JavaScript字符串。它们将作为文本出现,因此您可以使用正则表达式或子字符串匹配来获取所需的特定参数,然后构造新的URL并要求Mechanize获取它。