【问题标题】:Unable to write extracted text as individual rows in csv无法将提取的文本写入 csv 中的单独行
【发布时间】:2017-04-19 11:44:38
【问题描述】:

这可以被视为问题Finding an element within an element using Selenium Webdriver 的第二部分。

我在这里做的是,从表格中提取每个文本后,将其写入 csv 文件

代码如下:

from selenium import webdriver
import os
import csv

chromeDriver = "/home/manoj/workspace2/RedTools/test/chromedriver"
os.environ["webdriver.chrome.driver"] = chromeDriver
driver = webdriver.Chrome(chromeDriver)
driver.get("https://www.betfair.com/exchange/football/coupon?id=2")
list2 = driver.find_elements_by_xpath('//*[@data-sportid="1"]')

couponlist = []
finallist = []
for game in list2[1:]:
    coup = game.find_element_by_css_selector('span.home-team').text
    print(coup)
    couponlist.append(coup)
print(couponlist)
print('its done')


outfile = open("./footballcoupons.csv", "wb")
writer = csv.writer(outfile)
writer.writerow(["Games"])
writer.writerows(couponlist)

3 个打印语句的结果:

Santos Laguna
CSMS Iasi
AGF
Besiktas
Malmo FF
Sirius
FCSB
Eibar
Newcastle
Pescara

[u'Santos Laguna', u'CSMS Iasi', u'AGF', u'Besiktas', u'Malmo FF', u'Sirius', u'FCSB', u'Eibar', u'Newcastle', u'Pescara']

its done

现在,您可以注意到我将这些值写入 csv 的代码。但我最终把它奇怪地写进了csv。请看快照。有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: python csv selenium web-scraping


    【解决方案1】:

    根据the documentationwriterows 将行列表作为参数,并且

    对于 Writer 对象,行必须是字符串或数字的可迭代对象

    您正在传递一个字符串列表,因此writerows 会遍历您的字符串,将每个字符组成一行。

    你可以使用循环:

    for team in couponlist:
        writer.writerow([team])
    

    或将您的列表转换为列表列表,然后使用writerows

    couponlist = [[team] for team in couponlist]
    writer.writerows(couponlist)
    

    但是无论如何,如果您只有一列,则无需使用csv...

    【讨论】:

    • 完美.. 谢谢@thierry-lathuille。它工作.. 特别喜欢最后一行。干杯!
    猜你喜欢
    • 1970-01-01
    • 2019-07-11
    • 2020-10-05
    • 2017-12-19
    • 1970-01-01
    • 2017-11-20
    • 1970-01-01
    • 2023-04-05
    • 2018-02-15
    相关资源
    最近更新 更多