我正在编写一个简单的脚本来从这个链接中抓取数据: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
及以下是我运行此脚本/文件时的输出:
答案 0 :(得分:1)
您的正则表达式与链接不匹配。
试试这个:page_links = page.links_with(href: %r{.*/member/\w+})
您可以在此处验证正则表达式:http://rubular.com/