python csv导入到链接

时间:2016-02-16 03:45:38

标签: python csv

我正在尝试让Python基于csv文件打开网站。 我单独检查了所有代码,以确保它有效,但是当我从csv文件中引入此变量时,我收到以下错误消息: 这是代码:

import urllib
import urllib.request
from bs4 import BeautifulSoup
import os

import csv

f = open('gropn1.csv')
csv_f = csv.reader(f)

for row in csv_f:

    theurl="http://www.grote.com/?s="+csv_f[1] + "&q1=1"
    thepage = urllib.request.urlopen(theurl)
    soup = BeautifulSoup(thepage,"html.parser")

    for partno in soup.find('h2',{"class":"single-product-number"}):
        print(partno)

    for link in soup.find('ul',{"class":"breadcrumbs"}).findAll('a'):
        print(link.text)



f.close()

这是错误:

Traceback (most recent call last):
  File "grotestart2.py", line 13, in <module>
    theurl="http://www.grote.com/?s="+csv_f[1] + "&q1=1"
TypeError: '_csv.reader' object is not subscriptable

任何帮助将不胜感激! 感谢

1 个答案:

答案 0 :(得分:0)

  

TypeError:&#39; _csv.reader&#39;对象不可订阅

csv_f是您的 csv阅读器实例,根据定义它实际上是"not subscriptable"

您是不是要使用row变量。替换:

theurl="http://www.grote.com/?s="+csv_f[1] + "&q1=1"

使用:

theurl="http://www.grote.com/?s="+row[1] + "&q1=1"

您还试图迭代soup.find()调用的结果,这是{em}不可迭代的Tag实例。您打算使用find_all()。替换:

for partno in soup.find('h2',{"class":"single-product-number"}):

使用:

for partno in soup.find_all('h2', {"class":"single-product-number"}):

或者,使用CSS selector的较短版本:

for partno in soup.select('h2.single-product-number'):