[英]Unable to write data across columns in a csv file
我已經用python編寫了一個腳本,以從網頁的表中抓取不同的名稱及其值,並將其寫入csv文件中。 我下面的腳本可以完美地解析它們,但是我無法以自定義的方式將它們寫入csv文件。
我想做的是將names
和values
寫在您可能會在圖2中看到的各列中。
這是我的嘗試:
import csv
from bs4 import BeautifulSoup
import requests
res = requests.get("https://www.bloomberg.com/markets/stocks",headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, "lxml")
with open("outputfile.csv","w",newline="") as infile:
writer = csv.writer(infile)
for table in soup.select(".data-table-body tr"):
name = table.select_one("[data-type='full']").text
value = table.select_one("[data-type='value']").text
print(f'{name} {value}')
writer.writerow([name,value])
輸出如下所示:
我希望如何獲得輸出如下所示:
任何解決此問題的幫助將不勝感激。
嘗試定義空列表,將所有值附加到循環中,然后一次寫入所有值:
with open("outputfile.csv","w",newline="") as infile:
writer = csv.writer(infile)
names_and_values = []
for table in soup.select(".data-table-body tr"):
name = table.select_one("[data-type='full']").text
value = table.select_one("[data-type='value']").text
print(f'{name} {value}')
names_and_values.extend([name,value])
writer.writerow(names_and_values)
如果我對您的理解正確,請嘗試僅一次調用writerow,而不是每個循環調用一次
import csv
from bs4 import BeautifulSoup
import requests
res = requests.get("https://www.bloomberg.com/markets/stocks",headers={"User-Agent":"Mozilla/5.0"})
soup = BeautifulSoup(res.text, "lxml")
with open("outputfile.csv","w",newline="") as infile:
writer = csv.writer(infile)
data = []
for table in soup.select(".data-table-body tr"):
name = table.select_one("[data-type='full']").text
value = table.select_one("[data-type='value']").text
print(f'{name} {value}')
data.extend([name, value])
writer.writerow(data)
這似乎是一件丑陋的事情,確定嗎?
使用熊貓獲取csv和操作表。 您將需要執行以下操作:
import pandas as pd
df = pd.read_csv(path)
df.values.ravel()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.