这可以被视为问题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
答案 0 :(得分:3)
根据the documentation,writerows
将行列表作为参数,
一行必须是Writer对象的可迭代字符串或数字
您正在传递一个字符串列表,因此writerows
会遍历您的字符串,从每个字符中删除一行。
您可以使用循环:
for team in couponlist:
writer.writerow([team])
或将您的列表转换为列表列表,然后使用writerows
:
couponlist = [[team] for team in couponlist]
writer.writerows(couponlist)
但无论如何,如果你只有一列,就没有必要使用csv
......