2016-11-18 116 views
0

下面的代碼打印出我想要的所有內容;然而,我很難將它變成我可以使用的CSV格式。Python:從網頁抓取導出CSV

from selenium import webdriver 
import csv 

driver = webdriver.PhantomJS() 

#fetch top Amsterdam restaurants 
driver.get('http://www.eater.com/maps/best-amsterdam-restaurants') 

a=[] 
b=[] 
c=[] 

for elem in driver.find_elements_by_xpath('.//h2[span[@class = "c-mapstack__card-index"]]'): 
    restname = elem.text.encode('ascii', 'ignore') 
    a.append(restname) 

for address in driver.find_elements_by_class_name('c-mapstack__address'): 
    restaddress = address.text.encode('ascii', 'ignore').strip() 
    b.append(restaddress) 
for content in driver.find_elements_by_class_name('c-entry-content'): 
    restdescrip = content.text.encode('ascii', 'ignore').strip() 
    c.append(restdescrip) 

q=[(x,y) for x,y in zip(b, b[1:]) if '+31' in y] 


q.insert(21,'Raadhuisstraat Amsterdam, Netherlands') 
q.insert(25,'Leidsestraat 94 Amsterdam, North Holland 1017 PE, Netherlands') 
d=c[1:] 

new_dict= dict((a[i], (d[i],q[i])) for i in range(len(a))) 
with open('EaterPull-Amsterdam.csv', 'a') as fd: 
    writer = csv.writer(fd, 'excel') 
    writer.writerow(new_dict.iteritems()) 
#commented this out to write csv 
#for k, v in new_dict.iteritems(): 
    #print k, v 

我得到這個錯誤,當我運行它:

writer.writerow(new_dict.iteritems()) 
    _csv.Error: sequence expected 

我覺得這是超級簡單,但我不能完全包住我的頭周圍發生了什麼事情。

回答

0

這最終解決了我的問題。 k和v是csv模塊想要的序列。代碼如下所示:

for k, v in new_dict.iteritems(): 
    print k, v 
    eater = [k,v] 
    with open('EaterPull-Amsterdam.csv', 'a') as fd: 
     writer = csv.writer(fd, delimiter=",") 
     writer.writerow(eater)