从 CSV 打开 URL

Open URLs from CSV

我在 Mac OS.OS 上使用 Ruby 2.1.0p0

我正在解析一个 CSV 文件并抓取所有 URL,然后使用 Nokogiri 和 OpenURI 抓取它们,这就是我遇到的问题。

当我尝试使用 each 循环通过 URLs 数组到达 运行 时,出现此错误:

initialize': No such file or directory @ rb_sysopen - URL (Errno::ENOENT)

当我手动创建一个数组,然后 运行 通过它时,我没有得到任何错误。我尝试了 to_sURI::encode 以及我能想到并在 Stack Overflow 上找到的所有内容。

在数组上使用 puts 后,我可以从 CSV 或终端复制并粘贴 URL,它在我的浏览器中打开没问题。我尝试用 Nokogiri 打开它,但没有成功。

这是我的代码:

require 'rubygems'
require 'nokogiri'
require 'open-uri'
require 'uri'
require 'csv'

    events = Array.new
    CSV.foreach('productfeed.csv') do |row|
        events.push URI::encode(row[0]).to_s

    end 


    events.each do |event|

        page = Nokogiri::HTML(open("#{event}")) 

        #eventually, going to find info on the page, and scrape it, but not there yet. 

        #something to show I didn't get an error
        puts "open = success"


    end

请帮忙!我完全没有想法。

您似乎正在处理 header 行,其中一个值的字面意思是 "URL"。那不是一个有效的 URI,所以 open-uri 不会碰它。

CSV 模块有一个 headers 选项,它将自动使用 header。尝试打开它并参考 row["URL"]

我尝试做同样的事情,发现使用文本文件效果更好。

这是我做的。

#!/usr/bin/python

#import webbrowser module and time module
import webbrowser
import time

#open text file as "dataFile" and verify there is data in said file
dataFile = open('/home/user/Desktop/urls.txt','r')
if dataFile > 1:
        print("Data file opened successfully")
else:
        print("!!!!NO DATA IN FILE!!!!")
        exit()

#read file line by line, remove any spaces/newlines, and open link in chromium-browser
for lines in dataFile:
        url = str(lines.strip())
        print("Opening " + url)
        webbrowser.get('chromium-browser').open_new_tab(url)

#close file and exit
print("Closing Data File")
dataFile.close()

#wait two seconds before printing "Data file closed".
#this is purely for visual effect.
time.sleep(2)
print("Data file closed")

#after opener has run, user is prompted to press enter key to exit.
raw_input("\n\nURL Opener has run. Press the enter key to exit.")

exit()

希望对您有所帮助!