使用Mechanize和Nokogiri废弃网页并将数据存储在XML doc中

时间:2015-05-31 17:45:47

标签: ruby xml web-scraping nokogiri mechanize

我正在尝试使用Mechanize和Nokogiri废弃网站并以XML格式存储数据。我没有设置Rails项目,我只使用Ruby和IRB。

我写了这个方法:

def mechanize_club
    agent = Mechanize.new
    agent.get("http://www.rechercheclub.applipub-fft.fr/rechercheclub/")
    form = agent.page.forms.first
    form.field_with(:name => 'codeLigue').options[0].select
    form.submit
    page2 = agent.get('http://www.rechercheclub.applipub-fft.fr/rechercheclub/club.do?codeClub=01670001&millesime=2015')
    body = page2.body
    html_body = Nokogiri::HTML(body)
    codeclub = html_body.search('.form').children("tr:first").children("th:first").to_i
    @codeclubs << codeclub
    filepath  = '/davidgeismar/Documents/codeclubs.xml'
    builder   = Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
       xml.root {
          xml.codeclubs {
            @codeclubss.each do |c|
              xml.codeclub {
                xml.code_   c.code
              }
            end
          }
        }
    end
    puts builder.to_xml
  end

我的第一个问题是我不知道如何测试我的代码。 我在我的控制台中调用ruby webscrapper.rb,我认为该文件已被处理,但它不会在指定的路径中创建XML文件。 然后,更具体地说,我很确定这段代码是错误的,因为我没有机会测试它。

基本上我要做的是多次提交一份表格:

 agent = Mechanize.new
      agent.get("http://www.rechercheclub.applipub-fft.fr/rechercheclub/")
      form = agent.page.forms.first
      form.field_with(:name => 'codeLigue').options[0].select
      form.submit

我认为这段代码还可以,但我不希望它只选择options[0],我希望它选择一个选项,然后废弃我需要的所有数据,然后返回页面,然后选择{{ 1}} ...直到没有更多选项(我猜是迭代)。

1 个答案:

答案 0 :(得分:0)

  

我认为该文件已被处理,但它不会在指定的路径中创建一个xml文件。

您的代码中没有任何内容可以创建文件。您打印一些输出,但不要对openwrite文件执行任何操作。

也许您应该阅读IOFile文档,并查看您使用filepath变量的方式?

第二个问题是你不能在任何地方打电话给你的方法。虽然已定义并且Ruby将查看并解析该方法,但除非您调用该方法,否则它不知道您想要用它做什么:

def mechanize_club
  ...
end

mechanize_club()