我抓取的数据是空的(Rails 和机械化)
My scraped data is empty (Rails and mechanize)
我正在编写一个简单的脚本来从这个 link 中抓取数据:https://www.congress.gov/members。
该脚本将遍历每个 link 成员,跟随 link,并从 link 中抓取数据。此脚本是 Rails 应用程序 Ruby 上的 .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
以下是我运行这个script/file:
时的输出
您的正则表达式与链接不匹配。
试试这个:page_links = page.links_with(href: %r{.*/member/\w+})
您可以在此处验证正则表达式:http://rubular.com/
我正在编写一个简单的脚本来从这个 link 中抓取数据:https://www.congress.gov/members。
该脚本将遍历每个 link 成员,跟随 link,并从 link 中抓取数据。此脚本是 Rails 应用程序 Ruby 上的 .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
以下是我运行这个script/file:
时的输出您的正则表达式与链接不匹配。
试试这个:page_links = page.links_with(href: %r{.*/member/\w+})
您可以在此处验证正则表达式:http://rubular.com/