【发布时间】:2022-11-20 22:08:25
【问题描述】:
# Import required modules
import requests
from bs4 import BeautifulSoup
import time
import pandas as pd
# Get data from webpage
mystocks = ['GOOG', 'META', 'MSFT', 'PLTR', 'TSLA', 'ZS', 'PYPL', 'SHOP', 'TTCF']
def getData(symbol):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0;
Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/106.0.0.0 Safari/537.36'}
url = f'https://finance.yahoo.com/quote/{symbol}'
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.text, 'html.parser')
stock = {
'symbol': symbol,
'price': soup.find('div', {'class':'D(ib)
Mend(20px)'}).find_all('fin-streamer')
[0].text,
}
return stock
def export_data(stockdata):
df = pd.DataFrame(stockdata)
df.to_excel("LETS GO2.xlsx")
df = df.apply(pd.to_numeric)
df.apply(pd.to_numeric, errors='ignore')
if __name__ == '__main__':
while True:
stockdata = []
for item in mystocks:
print(item)
stockdata.append(getData(item))
export_data(stockdata)
time_wait = 10
print(f'Waiting {time_wait} minutes...')
time.sleep(time_wait * 60)
我需要将“价格”列转换为数字格式,但解决方案 df["A"] = pd.to_numeric(df["A"]) 不起作用...不再出现错误(这可能是我的代码的问题),但导出的 excel 未返回数字请求的数据类型。
感谢所有帮助,谢谢!
【问题讨论】:
-
您可能有一些错误的非数字值,您可以尝试使用 Pandas 和参数
errors='coerce'将它们转换为 null。这会将任何错误的非数值转换为NaN。试试df["A"] = pd.to_numeric(df["A"], errors='coerce') -
是的,我也尝试过,但没有成功……这消除了“无法解析字符串”错误,但仍然导致价格列导出为文本。谢谢您的帮助!
-
始终将有问题的完整错误消息(从单词“Traceback”开始)(不在 cmets 中)作为文本(不是屏幕截图,不是指向外部门户的链接)。完整的错误/回溯中还有其他有用的信息。
-
首先编辑问题并使用正确的缩进放置代码。接下来在问题的正文中描述问题,而不是在标题中。最后显示有问题的完整错误消息。
-
感谢您的反馈,现在应该修复这些问题,但请听听您的想法
标签: python