解析具有动态内容的网站

乔纳森·W

我正在使用Nokogiri解析TechCrunch [具有特定的搜索词。

http://techcrunch.com/search/education#stq=education&stp=1

问题在于该站点在返回与搜索项相关的列表之前有几秒钟的延迟,因此当Nokogiri检索到它时,我输入到Nokogiri进行解析的URL没有相关内容。

几秒钟后,内容似乎已动态加载-我猜是Javascript。关于如何稍微延迟检索HTML的任何想法?

詹森·金

使用Ruby方法, sleep

seconds_to_delay = 5
sleep seconds_to_delay

编辑1:处理在文档完成加载后加载一段时间的div

我讨厌这种情况。我必须处理完全相同的情况,所以这就是我的解决方法。您需要使用类似selenium-webdriver gem的工具。

require 'selenium-webdriver'
url = "http://techcrunch.com/search/education#stq=education&stp=1"

css_selector = ".tab-panel.active"

driver = Selenium::WebDriver.for :firefox
driver.get(url)
driver.switch_to.default_content
posts_text = driver.find_element(:css, css_selector).text
puts posts_text
driver.quit

如果您在Heroku,AWS EC2或Digital Ocean之类的虚拟机上运行此程序,则不能使用firefox。相反,您需要像phantom.js这样的无头浏览器。

为了使用phantom.js而不是firefox,首先,在VM上安装phantomjs。然后更改为driver = Selenium::WebDriver.for :phantomjs

您可以使用此gem实际为您安装phantomjs。


问题b)的第二次编辑

require 'selenium-webdriver'
url = "http://techcrunch.com/search/education#stq=education&stp=1"

css_selector = ".tab-panel.active ul.river-compact.river-search li"

driver = Selenium::WebDriver.for :phantomjs
driver.get(url)
driver.switch_to.default_content
items = driver.find_elements(:css, css_selector)
items.each {|x| puts x }
driver.quit

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Web抓取具有动态javascript内容的网站

来自分类Dev

具有动态内容的多语言网站

来自分类Dev

具有动态内容的片段

来自分类Dev

XMLHttpRequest以获取具有动态内容的DOM

来自分类Dev

QScrollArea具有动态更改的内容

来自分类Dev

具有动态内容的PHP表

来自分类Dev

具有动态内容的Codeigniter HTML缓存

来自分类Dev

具有动态内容的xpages轮播

来自分类Dev

具有动态大小的内容的UIScrollView

来自分类Dev

创建具有自己内容的动态标签

来自分类Dev

具有动态内容的静态页眉/页脚

来自分类Dev

具有多个变量的动态模态内容

来自分类Dev

解析具有动态密钥的JSONObject

来自分类Dev

解析具有动态属性的JSON

来自分类Dev

具有动态内容Angularjs的动态过滤器

来自分类Dev

Knockout JS:具有动态内容的动态标签

来自分类Dev

阻止每个网站域解析所有或某些DOM内容

来自分类Dev

如何获取具有相同页面和内容名称的网站?

来自分类Dev

具有响应宽度但固定高度的网站内容

来自分类Dev

如何在iOS中创建具有动态内容的视图?

来自分类Dev

将div放在具有动态内容的页面底部

来自分类Dev

具有动态原型内容和多个部分的UITableView

来自分类Dev

ExtJS 5-具有动态内容的工具提示

来自分类Dev

预先输入字段,其页脚具有动态内容

来自分类Dev

Gmaps.js-具有动态infoWindow内容的多个标记

来自分类Dev

UIScrollView具有粘性页脚UIView和动态高度内容

来自分类Dev

具有MVVM中动态内容的WPF状态栏

来自分类Dev

具有动态Wordpress内容的CSS首字下沉

来自分类Dev

预先输入字段,该字段的页脚具有动态内容