使用python将数据写入excel或csv文件

时间:2017-07-22 22:06:09

标签: excel python-3.x csv web-scraping openpyxl

首先,我对Python很陌生。话虽如此,我正试图抓一个网页,看看Shopkins Live节目的执行时间和地点,以便我可以映射它。现在,在你对Shopkins评判我之前 - 只知道这是一个项目,我正在和我最大的孩子一起做,这是一个巨大的Shopkins粉丝。

我最初尝试将数据放入csv文件中,但是当我这样做时,它会将单个字符打印到列中 - 例如,它会说是跨越四列而不是一列。我尝试将它放入括号写作([数据]),但这不起作用。

我现在已经尝试过写入excel,但我正在努力解决这个问题。任何帮助将不胜感激。当我运行python代码时,它会在Shell中输出我需要的内容,但不确定如何将其转换为在Excel中正确编写。以下是我的代码 - 感谢任何帮助:

from bs4 import BeautifulSoup
import requests
import os, csv, sys, openpyxl
import openpyxl 
from openpyxl import load_workbook
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
import contextlib
import re




url = 'http://www.shopkinslive.com/tour'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")
wb = load_workbook('Shopkins.xlsx')
ws = wb.get_sheet_by_name('Sheet1')

for div in soup.find_all('div', class_='row'):
    divtext = (div.text)
    ws['A1'].value = divtext  #I know this is what I need to fix but not sure how to do it


    print(divtext)   #This part works correctly

1 个答案:

答案 0 :(得分:0)

你的孩子真的很幸运,我打赌他/她知道!

代码:

from bs4 import BeautifulSoup
import requests
import pandas as pd


url = 'http://www.shopkinslive.com/tour'
r = requests.get(url)
soup = BeautifulSoup(r.text, "html.parser")

tour_date = soup.find_all("div", {"class": "col date"})
tour_city = soup.find_all("div", {"class": "col city"})
tour_venue = soup.find_all("div", {"class": "col venue"})
tour_time = soup.find_all("div", {"class": "col time"})


t_date = [' '.join(td.text.split()[1:]) for td in tour_date]
t_city = [' '.join(td.text.split()[1:]) for td in tour_city]
t_venue = [' '.join(td.text.split()[1:]) for td in tour_venue]
t_time = [' '.join(td.text.split()[1:]) for td in tour_time]


df = pd.DataFrame({'Date' : t_date, 'City': t_city, 'Venue': t_venue, 'Time': t_time} )

df.to_excel('Shopkins.xlsx')

我试图在这里解决,因为我没有设法逐行追加数据帧。但是这里的想法是:

我将使用BS获取所有必要的数据,将它们放入单独的列表中,然后在导出到excel文件之前将它们合并到数据框中。

请检查它是否符合您的需求。

P.s:[1:]部分应删除网站提供的<strong></strong>标记中的文字。所以,是的,这就是模式。