Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 导出整个html<;表>;使用Watir创建文本文档_Ruby_Automation_Watir_Watir Webdriver_Browser Automation - Fatal编程技术网

Ruby 导出整个html<;表>;使用Watir创建文本文档

Ruby 导出整个html<;表>;使用Watir创建文本文档,ruby,automation,watir,watir-webdriver,browser-automation,Ruby,Automation,Watir,Watir Webdriver,Browser Automation,基本上我想做的就是将整个html表导出到一个.txt文件(记事本文档) 到目前为止,我已经学会了如何指导浏览器查找带有表格的html页面 require 'rubygems' require 'hpricot' require "watir-webdriver" url = "http://www.example.com" browser = Watir::Browser.new browser.goto url 在cmd中运行上述命令后,我现在可以在浏览器中看到html表 这就是我被

基本上我想做的就是将整个html表导出到一个.txt文件(记事本文档)

到目前为止,我已经学会了如何指导浏览器查找带有表格的html页面

require 'rubygems' 
require 'hpricot' 
require "watir-webdriver" 
url = "http://www.example.com"
browser = Watir::Browser.new 
browser.goto url
在cmd中运行上述命令后,我现在可以在浏览器中看到html表

这就是我被困的地方。我如何使用Watir来

  • 找到标签
  • 收集和中的所有内容(即html和文本)
  • 将这些结果提取到.txt文件(记事本文档)中,并将其保存在特定文件夹中
  • 仅供参考,html表如下所示

    <table border="1" cellpadding="2">
    <tr>
    <th> Address </th>
    <th> Council tax band </th>
    <th> Annual council tax </th>
    </tr>
    
    <tr>
    <td> 2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ </td>
    <td align="center"> F </td>
    <td align="center"> &pound;2125 </td>
    </tr>
    
    
    地址
    议会税阶
    年度议会税
    CV56BZ考文垂斯通利大道2号
    F
    &磅;2125
    
    。。。。。。。上面这一行重复了很多次

    </table> 
    
    
    
    然后桌子就关上了

    所以要重新控制我的处境。我可以使用Watir将浏览器导航到包含html表的页面,但我的问题是,我不确定如何将结果(标记中的所有内容-包括html)提取到.txt文件,然后将该.txt文件保存到我的计算机上

    我更愿意使用Watir采取更小的步骤。我知道这一点,因此我只想学习如何提取表,并将我提取的所有内容保存到一个.txt文件中。我在网上看到了几个使用hpricot的示例。然而,大多数示例似乎遗漏了详细说明如何将数组(如果这是正确的方法)输出到.txt文件的代码

    您可以通过演示如何编写一段简单的代码来帮助我们将html表(以及所有内容,包括,以及介于两者之间的所有内容)提取到.txt记事本文件中吗


    非常感谢您抽出时间。

    要获取整个表格的HTML(如果它是页面上唯一的表格):

    你会得到这样的结果:

    => "<table border=\"1\" cellpadding=\"2\">\n<tbody><tr>\n<th> Address </th>\n<th> Council tax band </th>\n<th> Annual council tax </th>\n</tr>\n\n<tr>\n<td> 2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ </td>\n<td align=\"center\"> F </td>\n<td align=\"center\"> £2125 </td>\n</tr>\n\n</tbody></table>"
    
    Address
    Council tax band
    Annual council tax
    2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ
    F
    £2125
    
    要将每个单元格的文本写入文件,请执行以下操作:

    content = b.table.trs.collect {|tr| [tr[0].text, tr[1].text, tr[2].text]}
    File.open("table.txt", "w") {|file| file.puts content}
    
    该文件将如下所示:

    => "<table border=\"1\" cellpadding=\"2\">\n<tbody><tr>\n<th> Address </th>\n<th> Council tax band </th>\n<th> Annual council tax </th>\n</tr>\n\n<tr>\n<td> 2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ </td>\n<td align=\"center\"> F </td>\n<td align=\"center\"> £2125 </td>\n</tr>\n\n</tbody></table>"
    
    Address
    Council tax band
    Annual council tax
    2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ
    F
    £2125
    

    有很多方法可以做到这一点,如果我们对你想要实现的目标有更多的了解,那么我们可以给你更具体的答案,而不是笼统的答案

    如果要将内容转换为数组,可以使用Zeljko展示的
    .collect
    。如果您只想处理数据或迭代表中的行和单元格,则
    。每个
    。每个带有索引的\u可能就是您想要的

    我怀疑您真的想要表中的文本,而不是HTML。因此,这里有一些东西可以尝试(未经测试,但应该有效)

    如果上面的
    .rows
    .cells
    不起作用(未知方法),请尝试替换为
    .trs
    .tds
    (并非所有版本的watir都具有友好的 这些方法的别名)

    看看是否能说出你感兴趣的东西。如果是这样的话,您应该能够轻松地修改以将您想要的内容写入文件,而不是将其放到屏幕上


    但是,如果验证是您的目标,那么让自动化代码在数据库中查找并为您进行比较可能会更容易

    您可能不需要这样做:
    require'hpricot'
    作为对Watir的介绍,我推荐我的Watir书籍的免费版本:为什么您需要表格的HTML?您确定您不想只使用表格中的文本吗?你真的想要原始HTML吗?奇怪的是,本周出现了多个问题,需要hrpicot和watir webdriver。我不知道是不是一个博客造成的。这绝对符合我想要的开始。我假设如果我想将其保存为.CSV文件,我会将(“table.txt”、“w”)更改为(“table.CSV”、“w”)。在尝试上述代码后,我遇到了一个小问题。我已经完成了,在进入“File.open”(“table.txt”,“w”){| File | File.puts content}之前,它可以正常工作。我需要Win32console吗?我是否需要创建文本文件并将其保持打开状态?我对此非常陌生,请接受我的道歉。@user1077250:要创建csv文件,您还需要更改保存到文件中的文本,仅更改文件扩展名不会创建格式正确的csvfile@user1077250:如果提供保存文件时收到的错误消息,我可以告诉你更多的@Željko Filipin谢谢你的建议。我已设法将文本写入文件。很高兴。谢谢你的替代方法。然而,对于如何将收集到的内容写入文件,我并不感到困惑。我是瓦蒂尔的新手,那么我将如何使用类似于泽利科建议的方法?@user1077250:我建议您阅读Ruby如何处理文件。只需谷歌一下。如果你有特殊的问题,可以问。是的,类似的问题。。文件IO是基本Ruby内容的一部分(不特定于Watir),您可以找到多个Ruby教程来介绍如何使用文件。或者我可以推荐Brian Marick写的优秀的“使用Ruby编写日常脚本”一书
    Address
    Council tax band
    Annual council tax
    2, STONELEIGH AVENUE, COVENTRY, CV5 6BZ
    F
    £2125
    
    browser.table(:how => what).rows.each_with_index do |row, r|
      row.cells.each_with_index do |cell, c|
        puts "Row:#{r} Cell:#{c} text is: #{cell.text}"
      end
    end