Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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脚本来创建网站上的csv数据文件_Ruby_Scripting - Fatal编程技术网

需要编写一个ruby脚本来创建网站上的csv数据文件

需要编写一个ruby脚本来创建网站上的csv数据文件,ruby,scripting,Ruby,Scripting,有一个网站为我提供特定州的pin码信息,例如,当我在下拉列表中选择州时,会提供详细信息 我需要用ruby编写脚本,它将创建包含特定状态的所有数据的CSV文件 今天是我在ruby上的第一天,我不知道该怎么做。任何方向正确的帮助都将不胜感激 谢谢您应该对FasterCSV gem感兴趣 然后,诸如此类: require 'fastercsv' FasterCSV.open("temp.csv", "w") do |csv| csv << ["line1row1", "line1ro

有一个网站为我提供特定州的pin码信息,例如,当我在下拉列表中选择州时,会提供详细信息

我需要用ruby编写脚本,它将创建包含特定状态的所有数据的CSV文件

今天是我在ruby上的第一天,我不知道该怎么做。任何方向正确的帮助都将不胜感激


谢谢

您应该对FasterCSV gem感兴趣

然后,诸如此类:

require 'fastercsv'
FasterCSV.open("temp.csv", "w") do |csv|
  csv << ["line1row1", "line1row2"]
  csv << ["line2row1", "line2row2"]
  # ...
end
需要'fastercsv'
FasterCSV.open(“临时csv”,“w”)do | csv|

csv您需要澄清/提供更多信息

  • 你是在试图屏蔽那个网站,还是在试图制作类似的东西
  • 如果是前者,则需要使用Net::HTTP,可能还需要使用一些正则表达式
  • 如果是后者,数据来自何处(例如,您以何种形式获取数据)
无论如何,ruby是一种很好的语言。尝试irb进行代码段的交互式测试。生成CSV非常容易,尤其是如果您没有任何复杂的字符串字段(例如,可能有嵌入引号的内容)

要筛选刮片,请执行以下操作:

  • 用手指抓住页面
  • 通过正文使用正则表达式来选择所需的值
  • 使用或使用另一个答案中提到的包将其转换为CSV

您应该能够使用以下ruby gems实现这一点:

  • (b)与 (网址)
  • 或者(解析网站的 html并获取所需的数据)
  • (将数据另存为 (csv)

您可以在上面提到的URL和URL上找到每个gem的文档和示例。除此之外,a可能有助于提高您的Ruby技能。

碰巧我最近完成了一个名为bankjob的Ruby程序,该程序仅用于在线银行网站

它是完全开源的,并且有文档记录,所以请访问

Bankjob使用Mechanize、Hpricot(如其他答案中所建议的)来刮取包含表格的网站,并生成CSV输出(它还生成与您的需要无关的OFX,因为它是银行对账单数据,但CSV应适用于任何类型的数据)

您至少应该能够从Bankjob开始,删除您不需要获取邮政信息的内容,但事实上,您可以按原样使用它,创建一个特定的刮板(有文档记录)来获取数据,并使用--csv选项将数据转储到csv


祝你好运

谢谢你的回复,我对我最初的问题不够清晰表示歉意(但我对ruby还是很陌生)。你是对的,我正在尝试对该网站进行筛选。您能给我指出一些Net::HTTP的好例子吗?感谢您的帮助。值得注意的是,fastercsv已包含在“csv”中。。。概述如下:
require 'fastercsv'
FasterCSV.open("temp.csv", "w") do |csv|
  csv << ["line1row1", "line1row2"]
  csv << ["line2row1", "line2row2"]
  # ...
end