2016-02-16 5 views
0

Я пытаюсь открыть Python для открытия сайтов на основе файла csv. Я проверил все мои кода индивидуально, чтобы убедиться, она работала, и это делает, но когда я ввожу эту переменную из файла CSV я получаю сообщение об ошибке ниже: Вот код:python csv importing to link

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 

Любая помощь была бы принята с благодарностью! Благодаря

ответ

0

TypeError: '_csv.reader' object is not subscriptable

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() вызова, который представляет собой 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'): 
+0

Да выработанного - но теперь я получаю другую ошибку: Traceback (самый последний вызов последний): Файл «C: /Users/PPluck/Downloads/grotestart2.py», строка 17, в для partsno в soup.find ('h2', {"class": "single-product-nu mber "}): TypeError: объект« NoneType »не является итерируемым - любые идеи? – PatrickP76

+0

@ PatrickP76 уверен, обновлено. – alecxe

+0

спасибо - сработал большой !!! – PatrickP76