簡體   English   中英

機械化和nokogiri的Ruby腳本

[英]Ruby script with mechanize and nokogiri

因此,基本上我早些時候問了一個問題,並得到了一個可以解決該問題的答案,但是現在我意識到我需要更多幫助,因為我花了最后幾個小時嘗試解決此問題,但始終遇到“ nil:Nilclass:錯誤。基本上我需要去通過該網站上列出的每個節目(因此通過每個字母以及每個頁面所包含的每個頁面),並獲得以下信息:1.節目標題(我已經完成了這一部分)2.然后復制每個節目的頁面網址,然后在其末尾添加“ / episodes /”,或單擊節目,然后單擊情節選項卡並復制該網址。

這是我到目前為止的內容:

require 'mechanize'
shows = Array.new
agent = Mechanize.new
agent.get 'http://www.tv.com/shows/sort/a_z/'
agent.page.search('//div[@class="alphabet"]//li[not(contains(@class, "selected"))]/a').each do |letter_link|
  agent.get letter_link[:href]
  agent.page.search('//li[@class="show"]/a').each { |show_link| shows << show_link.text }

  while next_page_link = agent.page.at('//div[@class="_pagination"]//a[@class="next"]') do
    agent.get next_page_link[:href]
    agent.page.search('//li[@class="show"]/a').each { |show_link| shows << show_link.text }
  end
end

require 'pp'
pp shows

因此最終結果可能類似於以下內容:標題:權力的游戲URL: http : //www.tv.com/shows/game-of-thrones/episodes/

我已經嘗試了所有方法(甚至是從頭開始編寫),但似乎並不能添加額外的部分,因此我希望這里有人能夠幫助我。 謝謝

這個怎么樣

require 'mechanize'
shows = {}
base_uri = "http://www.tv.com/"
agent = Mechanize.new
agent.get 'http://www.tv.com/shows/sort/a_z/'
agent.page.search('//div[@class="alphabet"]//li[not(contains(@class, "selected"))]/a').each do |letter_link|
  agent.get letter_link[:href]
  letter = letter_link.text.upcase
  shows[letter] = agent.page.search('//li[@class="show"]/a').map{ |show_link| {show_link.text => base_uri << show_link[:href].to_s << 'episodes/'} }

  while next_page_link = agent.page.at('//div[@class="_pagination"]//a[@class="next"]') do
    agent.get next_page_link[:href]
    shows[letter] << agent.page.search('//li[@class="show"]/a').map{ |show_link| {show_link.text => base_uri << show_link[:href].to_s << 'episodes/'} }
  end
  shows[letter].flatten!
end
puts shows

這將創建以下結構Hash[letter] => Array[{ShowName => LinktoEpisodes}]

例:

{"A"=>[{"A Show"=>"http://www.tv.com/shows/a-show/episodes/"},{"Another Show"=>"http://www.tv.com/shows/another-show/episodes/"},...],"B"=>[B SHOWS....],....}

希望這可以幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM