热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

主板市盈率、市净率及股息率的自动化抓取

本文介绍了如何通过Python脚本自动从中国指数有限公司网站抓取主板的市盈率、市净率和股息率等关键财务指标,并将这些数据存储到CSV文件中。涉及的技术包括网页解析、正则表达式以及异常处理。

思路概述:


1. 分析并理解中国指数有限公司网站上数据的存储结构。


2. 获取交易日期,并据此构建完整的网页链接。


3. 通过请求每个链接来获取相应的财务数据。


4. 将收集到的数据整理并保存为CSV格式的文件。


关键技术点:


1. 使用BeautifulSoup库进行网页解析,提取HTML标签中的内容。


2. 利用正则表达式从URL中提取日期信息。


3. 实现数据的持久化存储,确保数据的完整性和可用性。


4. 添加错误处理机制,提高程序的健壮性。


5. 记录程序运行的时间,评估效率。


示例代码如下:


# 导入必要的库
import tushare as ts
import datetime
import requests
from bs4 import BeautifulSoup
import csv
import re

# 获取交易日期
end_date = datetime.date.today()
data = ts.get_hist_data('000012', start='2015-01-01', end=str(end_date))
dates = list(data.index)

# 构建不同类型的URL
urls = [f'http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio?type=zy4&date={date}' for date in dates]
urls_3 = [f'http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio?type=zy3&date={date}' for date in dates]
urls_2 = [f'http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio?type=zy2&date={date}' for date in dates]
urls_1 = [f'http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio?type=zy1&date={date}' for date in dates]

# 请求网页
def get_html_text(url):
try:
respOnse= requests.get(url)
response.raise_for_status()
response.encoding = response.apparent_encoding
return response.text
except Exception as e:
print(f'Error: {e}')
return ''

# 解析网页并提取数据
def get_info(url):
html = get_html_text(url)
soup = BeautifulSoup(html, 'html.parser')
td_elements = soup.find_all('td')
date = re.findall(r'\d{4}-\d{2}-\d{2}', url)[0]
if len(td_elements) == 48:
return (date,) + tuple(td.string for td in td_elements)
else:
return (date,) + tuple([0.0] * 48)

# 保存数据到CSV文件
def save_to_csv(filename, info):
with open(f'E:\download\{filename}.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow(info)

# 主函数
def main():
filenames = ['guxilv', 'shijinglv', 'gundongshiyinglv', 'jingtaishiyinglv']
all_urls = [urls, urls_3, urls_2, urls_1]
for filename, urls_list in zip(filenames, all_urls):
count = 0
print(f'开始抓取 {filename} 数据...')
start_time = datetime.datetime.now()
for url in urls_list:
save_to_csv(filename, get_info(url))
count += 1
end_time = datetime.datetime.now()
print(f'完成 {filename} 的抓取,共 {count * 48} 条数据已存入 E:\download\{filename}.csv 文件。耗时:{(end_time - start_time).seconds}秒')

if __name__ == '__main__':
main()

上述代码展示了如何利用Python进行网络爬虫操作,从指定网站抓取主板市场的财务指标,并将结果保存至本地文件系统中,便于后续分析和使用。


推荐阅读
  • 题目描述了一个病毒检测问题,要求使用AC自动机算法统计目标文本中多个模式串的出现次数。 ... [详细]
  • Java中'=='与'equals'方法的区别
    在Java编程语言中,'=='操作符用于比较两个对象的引用是否指向同一个内存位置,而'equals'方法则用于比较两个对象的内容是否相等。本文通过具体示例详细解释了两者的差异,并提供了代码演示。 ... [详细]
  • MyEclipse技巧:高效生成toString方法
    本文将介绍如何在MyEclipse中快速且高效地生成toString方法,帮助开发者简化编码过程,提高开发效率。 ... [详细]
  • 本文介绍并分享了三个个人开源项目,涵盖单元测试中HttpContext的可测试性增强、Visual Studio插件开发以及单元测试报告自动生成工具。 ... [详细]
  • 本文介绍如何创建一个专门用于处理浮点数的JSON处理器,并将其注册到JSON配置器中,以实现对浮点数的精确控制和格式化输出。 ... [详细]
  • 详细的介绍针对graphiclayer的空间查询。首先,空间查询的方式:提供多种类型的空间查询,包括点周边、线周边、面内等多种方式;其次,图形绘制完成后状态的展示;再次 ... [详细]
  • 本文详细介绍了ASP.NET缓存的基本概念和使用方法,包括输出缓存、数据缓存及其高级特性,如缓存依赖、自定义缓存和缓存配置文件等。通过合理利用这些缓存技术,可以显著提升Web应用程序的性能。 ... [详细]
  • 本文提供了关于WSDL(Web Services Description Language)的详细参考资料链接,包括官方文档和深入解析,旨在帮助开发者更好地理解和使用WSDL进行Web服务的开发与集成。 ... [详细]
  • 优化使用Apache + Memcached-Session-Manager + Tomcat集群方案
    本文探讨了使用Apache、Memcached-Session-Manager和Tomcat集群构建高性能Web应用过程中遇到的问题及解决方案。通过重新设计物理架构,解决了单虚拟机环境无法真实模拟分布式环境的问题,并详细记录了性能测试结果。 ... [详细]
  • 本文详细探讨了C++中赋值运算符重载函数(operator=)的使用方法和注意事项,结合实例分析了其参数、返回值、调用时机等关键点,并讨论了浅拷贝和深拷贝的区别及其重要性。 ... [详细]
  • 本文将详细介绍NSRunLoop的工作原理,包括其基本概念、消息类型(事件源)、运行模式、生命周期管理以及嵌套运行等关键知识点,帮助开发者更好地理解和应用这一重要技术。 ... [详细]
  • 本文介绍了iftop的下载地址、基本参数配置方法及其在不同Linux发行版中的安装问题解决方案。iftop是一款强大的实时网络流量监控工具,适用于需要精确监控网络带宽使用情况的场景。 ... [详细]
  • 免费获取:全面更新的Linux集群视频教程及配套资源
    本资源包含最新的Linux集群视频教程、详细的教学资料、实用的学习课件、完整的源代码及多种软件开发工具。百度网盘链接:https://pan.baidu.com/s/1roYoSM0jHqa3PrCfaaaqUQ,提取码:41py。关注我们的公众号,获取更多更新的技术教程。 ... [详细]
  • 在J2EE开发领域,众多专业术语如PO、VO、BO、DTO、POJO及DAO常常令初学者感到困惑。本文旨在清晰解释这些术语及其相互间的关系,帮助开发者更好地理解和运用这些概念。 ... [详细]
  • 本文详细介绍了 HTML DOM 中的 document.getElementsByTagName 方法,通过实例说明其用法和应用场景。 ... [详细]
author-avatar
灰太狼老婆红太狼_715
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有