首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将对象列表存储为python中的csv

将对象列表存储为python中的csv
EN

Stack Overflow用户
提问于 2018-06-16 04:55:51
回答 1查看 7.9K关注 0票数 4

我正在写一个程序,抓取一个网站,并从一个表中提取名称和链接。我将每个名称和相应的链接存储在一个对象中,并通过运行for循环将其附加到一个对象列表中。我想将此列表保存为csv文件,但无法使用文件写入器完成此操作,因为它会将整个对象转换为str,这不是我想要的。如果有人能指导我,我将不胜感激。下面是我的代码:

from selenium import webdriver
from bs4 import BeautifulSoup

class Player():
    def __init__(self):
        self.name = ""
        self.link = ""

player_list = []

driver = webdriver.PhantomJS(executable_path = r'C:\Users\sarim\Desktop\Scraper\phantomjs.exe')
driver.get('https://dak.gg/ranks/na/solo-fpp/rating')
pause = 0
lastHeight = driver.execute_script("return document.body.scrollHeight")
while True:
    driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
    time.sleep(pause)
    newHeight = driver.execute_script("return document.body.scrollHeight")
    if newHeight == lastHeight:
        break
    lastHeight = newHeight

html_doc = driver.page_source
soup = BeautifulSoup(html_doc, 'lxml')

players = soup.find('table', class_ = 'list rating')
player_names = players.find_all('td', class_ = 'nick')

add_link = "https://dak.gg"

for i in player_names[0:3]:
    newPlay = Player()
    n = i.find('a')
    l = add_link + n['href']
    newPlay.link = l
    newPlay.name = n.text.strip()
    #print newPlay.name
    #print newPlay.link
    player_list.append(newPlay)

#print players_names[1]
driver.quit()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-16 05:40:34

试试这样的东西

import csv
with open('data.csv', 'w',) as csvfile:
    writer = csv.writer(csvfile)
    writer.writerow(['Name', 'Link'])
    for player in player_list:
        writer.writerow([player.name, player.link])
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50882547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档