Tag: scraping

如何使用Nokogiri在两个HTML注释之间抓取HTML?

我有一些HTML页面,其中要提取的内容用下面的HTML注释标记。 ….. some text Some more elements … 我正在使用Nokogiri并尝试在和 comments之间提取HTML。 我想提取这两个HTML注释之间的完整元素: some text Some more elements 我可以使用这个字符回调获得纯文本版本: class TextExtractor < Nokogiri::XML::SAX::Document def initialize @interesting = false @text = "" @html = "" end def comment(string) case string.strip # strip leading and trailing whitespaces when /^begin content/ # match starting comment @interesting = true when /^end […]

DRY使用nokogiri搜索网站的每个页面

我想搜索网站的每个页面。 我的想法是找到保留在域内的页面上的所有链接,访问它们并重复。 我必须采取措施,不再重复努力。 所以它很容易开始: page = ‘http://example.com’ nf = Nokogiri::HTML(open(page)) links = nf.xpath ‘//a’ #find all links on current page main_links = links.map{|l| l[‘href’] if l[‘href’] =~ /^\//}.compact.uniq “main_links”现在是活动页面中以“/”开头的链接数组(仅应为当前域上的链接)。 从这里我可以将这些链接提供给上面类似的代码,但我不知道确保我不重复自己的最佳方法。 我想我在访问时会开始收集所有访问过的链接: main_links.each do |ml| visited_links = [] #new array of what is visted np = Nokogiri::HTML(open(page + ml)) #load the first main_link visted_links.push(ml) #push the […]

是否可以使用Ruby和Nokogiri插入JavaScript引擎?

我正在编写一个应用程序来抓取一些网站并从中抓取数据。 我正在使用Ruby,Curl和Nokogiri来做这件事。 在大多数情况下,它很简单,我只需要ping一个URL并解析HTML数据。 设置完美无缺。 但是,在某些情况下,网站会根据某些单选按钮上的用户输入检索数据。 这会调用一些JavaScript从服务器获取更多数据。 生成的URL和发布的数据由JavaScript代码确定。 是否可以使用: 一个JavaScript库以及这个设置,它能够确定在我的HTML页面中执行JavaScript吗? 除了使用不同的库之外,还有一些集成或HTML和JS库进行通信的方式吗? 例如,如果单击一个按钮,Nokogiri需要调用JavaScript,然后JavaScript需要更新Nokogiri。 如果我的方法看起来不是最好的,那么你的建议是使用Ruby在Web上构建一个crawler + scraper。 编辑:使用therubyrace看起来像第1点是可能的,因为它在你的代码中嵌入了V8引擎,但有2个替代吗?