【问题标题】:Python: Exporting CSV from web scrapePython:从网络抓取中导出 CSV
【发布时间】:2016-11-18 18:41:24
【问题描述】:

下面的代码当前打印了我想要从网站输出的所有内容;但是,我在尝试将其转换为我可以使用的 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

我觉得这非常简单,但我无法完全理解发生了什么。

【问题讨论】:

    标签: python-2.7 csv selenium-webdriver web-scraping


    【解决方案1】:

    这最终解决了我的问题。 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)
    

    【讨论】:

      猜你喜欢
      • 2014-04-13
      • 1970-01-01
      • 2022-09-27
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-08-11
      相关资源
      最近更新 更多