。
首先,我们需要导入所需的库和模块。在这个脚本中,我们将使用以下库和模块:
import csv
import requests
from bs4 import BeautifulSoup
接下来,我们需要定义一个函数来从finviz.com中抓取数据。我们将使用requests库发送HTTP请求,并使用BeautifulSoup库解析HTML响应。
def scrape_data(input_file, output_file):
# 读取输入的csv文件
with open(input_file, 'r') as file:
reader = csv.reader(file)
next(reader) # 跳过标题行
symbols = [row[0] for row in reader] # 获取股票代码列表
# 创建输出的csv文件并写入标题行
with open(output_file, 'w', newline='') as file:
writer = csv.writer(file)
writer.writerow(['Symbol', 'Company', 'Price', 'Change'])
# 遍历股票代码列表并抓取数据
for symbol in symbols:
url = f'https://finviz.com/quote.ashx?t={symbol}'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
# 解析HTML响应并提取所需的数据
company = soup.find('table', {'class': 'fullview-title'}).findAll('td')[1].text
price = soup.find('table', {'class': 'snapshot-table2'}).findAll('td')[1].text
change = soup.find('table', {'class': 'snapshot-table2'}).findAll('td')[9].text
# 将数据写入输出的csv文件
writer.writerow([symbol, company, price, change])
最后,我们可以调用该函数并传入输入文件和输出文件的路径。
input_file = 'input.csv'
output_file = 'output.csv'
scrape_data(input_file, output_file)
这个脚本将读取名为input.csv的输入文件,其中包含股票代码列表。然后,它将从finviz.com中抓取每个股票的公司名称、价格和涨跌幅数据,并将这些数据写入名为output.csv的输出文件中。
请注意,这只是一个简单的示例脚本,用于说明如何实现所需的功能。在实际应用中,可能需要进行错误处理、数据清洗和其他额外的功能。
领取专属 10元无门槛券
手把手带您无忧上云