2017-09-15 9 views
0

私はGoogleで1000行以上あるので検索を自動化しようとしています。 CSVからの検索を読み込んで自動化することはできますが、ファイルに配列を追加することはできません。多分私は何かを欠いているでしょうか?ルビーを使用して2列目のcsvファイルに配列を追加する

このテストでは、CSVファイルはヘッダーと3行のない1つの列で構成されています。 the documentation for CSV.openに示すように

require 'watir' 
require 'nokogiri' 
require 'csv' 

browser = Watir::Browser.new(:chrome) 
browser.goto("http://www.google.com") 
CSV.open('C:\Users\Market\Documents\Emailhunter_scraper\test-email.csv').map do |terms| 
browser.text_field(title: "Rechercher").set terms 
browser.send_keys :return 

sleep(rand(10)) 
doc = Nokogiri::HTML.parse(browser.html) 
doc.css("div.f kv _SWb").each do |item| 
    name = item.css('a').text 
    link = item.css('a')[:href] 
    csv << [name, link] 
end 
sleep(rand(10)) 
end 
sleep(rand(10)) 
+0

私はあなたが書き込みのためにCSVファイルを開いていないということを推測しています。これを試してください: 'CSV.open( 'path/to/file/csv'、 'wb')' – hoffm

+0

あなたのソリューションをありがとう、確かに私のcsvに書きます。唯一の問題は、何も書き込まずに書き込まれたすべてを消去することです... 何が間違っていますか? 私のcsvファイルは2つの列(エンティティ、URL)と3つの行(a、b、c)を持っています Rubyに各行を探す方法を知っていますが、読み取られたエンティティに対応します。私は十分な私は戻ってヒットすることをためらっていないので、十分明確であるかわからない); –

+0

私の問題のすべてのアップデート? –

答えて

1

"rb"にファイルmodeデフォルト:

は、ここに私のコードです。

これは、ファイルがの読み取り専用として開かれていることを意味します。代わりに、あなたが使用する必要があります。

CSV.open('path/to/file/csv', 'wb') 

異なるモードの完全なマニュアルがhereを見ることができます。彼らは次のとおりです:

"r" Read-only, starts at beginning of file (default mode). 

"r+" Read-write, starts at beginning of file. 

"w" Write-only, truncates existing file 
    to zero length or creates a new file for writing. 

"w+" Read-write, truncates existing file to zero length 
    or creates a new file for reading and writing. 

"a" Write-only, each write call appends data at end of file. 
    Creates a new file for writing if file does not exist. 

"a+" Read-write, each write call appends data at end of file. 
    Creates a new file for reading and writing if file does 
    not exist. 

"b" Binary file mode 
    Suppresses EOL <-> CRLF conversion on Windows. And 
    sets external encoding to ASCII-8BIT unless explicitly 
    specified. 

"t" Text file mode 
+0

OMG私はとても愚かです!あなたは私の前に私に答えて、私はちょうど理解した...ありがとう! –

関連する問題