加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 使用海葵和nokogiri进行屏幕刮擦所需的帮助

发布时间:2020-12-17 03:26:36 所属栏目:百科 来源:网络整理
导读:我有一个 http://www.example.com/startpage的起始页面,其中1220个列表以标准方式分页,例如每页20个结果. 我有代码工作,解析结果的第一页,并在其网址中包含“example_guide / paris_shops”的链接.然后我使用Nokogiri来提取该最终页面的特定数据.一切正常,20
我有一个 http://www.example.com/startpage的起始页面,其中1220个列表以标准方式分页,例如每页20个结果.

我有代码工作,解析结果的第一页,并在其网址中包含“example_guide / paris_shops”的链接.然后我使用Nokogiri来提取该最终页面的特定数据.一切正常,20个结果写入文件.

但是,我似乎无法弄清楚如何让Anemone爬到结果的下一页(http://www.example.com/startpage?page=2),然后继续解析该页面,然后再解析第3页页面(http://www.example.com/startpage?page=3)等.

所以我想问一下是否有人知道如何在页面上启动海葵,解析该页面上的所有链接(以及特定数据的下一级数据),然后按照分页到下一页的结果所以海葵可以再次开始解析,等等.鉴于分页链接与结果中的链接不同,Anemone当然不会遵循它们.

目前我正在加载第一页结果的网址,让它完成,然后粘贴到第二页结果等的下一个网址等.非常手动和低效,特别是对于获取数百页.

任何帮助将非常感激.

require 'rubygems'
require 'anemone'
require 'nokogiri'
require 'open-uri'

Anemone.crawl("http://www.example.com/startpage",:delay => 3) do |anemone|
  anemone.on_pages_like(/example_guide/paris_shops/[^?]*$/) do | page |

doc = Nokogiri::HTML(open(page.url))

name = doc.at_css("#top h2").text unless doc.at_css("#top h2").nil?
address = doc.at_css(".info tr:nth-child(3) td").text unless doc.at_css(".info tr:nth-child(3) td").nil?
website = doc.at_css("tr:nth-child(5) a").text unless doc.at_css("tr:nth-child(5) a").nil?

open('savedwebdata.txt','a') { |f|
  f.puts "#{name}t#{address}t#{website}t#{Time.now}"
}
  end
end

解决方法

实际上,Anemone内置了nokogiri doc.如果你调用page.doc这是一个nokogiri文档,所以不需要有两个nokogiri文档

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读