我的抓取数据是空的(Rails和机械化)

时间:2015-09-25 10:08:39

标签: ruby-on-rails ruby web-scraping rake rake-task

我正在编写一个简单的脚本来从这个链接中抓取数据:https://www.congress.gov/members

脚本将遍历该成员的每个链接,遵循该链接,并从该链接中抓取数据。这个脚本是Ruby on Rails应用程序上的.rake文件。

以下是剧本:

require 'mechanize'
require 'date'
require 'json'
require 'openssl'

module OpenSSL
    module SSL
    remove_const :VERIFY_PEER
    end
end

OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE

I_KNOW_THAT_OPENSSL_VERIFY_PEER_EQUALS_VERIFY_NONE_IS_WRONG = nil


task :testing do

    agent = Mechanize.new
    page = agent.get("https://www.congress.gov/members")

    page_links = page.links_with(href: %r{^/member/\w+})

    product_links = page_links[0...2]

    products = product_links.map do |link|

      product = link.click

      state = product.search('td:nth-child(1)').text
      website = product.search('.member_website+ td').text

      {
        state: state,
        website: website
      }

    end

    puts JSON.pretty_generate(products)
end

及以下是我运行此脚本/文件时的输出:

enter image description here

1 个答案:

答案 0 :(得分:1)

您的正则表达式与链接不匹配。 试试这个:page_links = page.links_with(href: %r{.*/member/\w+})

您可以在此处验证正则表达式:http://rubular.com/