Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.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
Ruby on rails 如何获取使用Nokogiri后加载的div标记_Ruby On Rails_Ruby_Web Scraping_Nokogiri - Fatal编程技术网

Ruby on rails 如何获取使用Nokogiri后加载的div标记

Ruby on rails 如何获取使用Nokogiri后加载的div标记,ruby-on-rails,ruby,web-scraping,nokogiri,Ruby On Rails,Ruby,Web Scraping,Nokogiri,我一直在尝试使用Nokogiri进行网页抓取 由于JavaScript的原因,我想在一段时间后加载内容。我试过使用睡眠,但我不知道哪里出了问题 以下是片段: require 'nokogiri' require "open-uri" require 'json' url='https://www.instagram.com/someuser/' file = Nokogiri::HTML(open(url)) sleep 600 puts file data = JSON.

我一直在尝试使用Nokogiri进行网页抓取

由于JavaScript的原因,我想在一段时间后加载内容。我试过使用
睡眠
,但我不知道哪里出了问题

以下是片段:

require 'nokogiri'
require "open-uri"
require 'json'

url='https://www.instagram.com/someuser/'
file = Nokogiri::HTML(open(url))
sleep 600
puts file
data = JSON.parse file
links=file.css('div.v1Nh3 a')
puts links

我没有收到任何链接。

您要查找的内容必须通过jQuery或AJAX加载,我认为Nokogiri无法处理这一点


您应该查看“Watir”gem并使用它在浏览器中打开URL,然后您可以使用Nokogiri进行解析。

只有Nokogiri使用sleep是不可能的??不,不可能。数据不会存在于HTML中,而是在浏览器加载页面,运行JavaScript,然后向服务器发出第二个有效负载请求后加载<代码>睡眠仅暂停脚本,与解析无关。我建议学习AJAX的工作原理。WATIR告诉浏览器加载页面,然后处理JavaScript,然后它向浏览器请求包含最终呈现信息的页面的HTML。这些内容可能与最初的HTML大不相同。Nokogiri不是JavaScript解析器,它只适用于HTML/XML或XML派生数据。在命令行中使用
wget
curl
nokogiri
查看正在解析的实际源代码
sleep
没有帮助,您必须使用基于Watir的工具或类似工具。另请参阅,其中描述了从DHTML提取数据的过程。有时这就是所需要的。另外,请阅读“”及其链接页面。所以语法很重要。我建议您在写问题时运行语法检查程序。当然,我会研究一下。另外,关于如何使用nokogiri从instagram请求所有数据,而不仅仅是10个数据,您能帮我解答一个疑问吗?instagram可能有一个API,因此,如果他们有,请使用它,不要试图刮页面。刮削非常容易出错,而且非常老套。API是干净、高效的,您应该如何做到这一点。