【发布时间】:2020-07-06 01:40:50
【问题描述】:
我一直在尝试使用 Nokogiri 进行网络抓取。
可能由于 JavaScript,我想在一段时间后加载内容。我尝试过使用sleep,但我不知道我哪里出错了。
这里是sn-p:
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
我没有得到任何链接。
【问题讨论】:
-
Nokogiri 不是 JavaScript 解析器,它仅适用于 HTML/XML 或 XML 派生数据。在命令行中使用
wget、curl或nokogiri来查看正在解析的实际源代码。sleep无济于事,您必须使用基于 Watir 的工具之一或类似的工具。 -
另见stackoverflow.com/a/19714636/128421,它描述了从 DHTML 中挑选数据的过程。有时这就是我们所需要的。
-
另外,请使用tour 并阅读“How to Ask”及其链接页面。语法对 SO 很重要。我建议您在写问题时运行语法检查器。
-
当然,我会调查的。另外你能帮我解决一个关于如何使用 nokogiri 从 instagram 请求所有数据而不仅仅是 10 个数据的疑问吗?
-
Instagram 可能有一个 API,因此,如果他们有,请使用它,不要尝试抓取页面。抓取非常容易出错,而且非常老派。 API 干净、高效,以及您应该如何做。
标签: ruby-on-rails ruby web-scraping nokogiri