Python爬取中国金融期货交易所通知

本文介绍了如何使用Python通过requests和BeautifulSoup库爬取中国金融期货交易所的公告通知,包括识别静态网页结构、翻页规则、数据请求、乱码处理、HTML解析和数据存储在PandasDataFrame中并保存为Excel文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、观察网页

(1)通过谷歌浏览器进入中国金融期货交易所
网页地址:http://www.cffex.com.cn/

(2)判断所爬取的网页是否为静态网页。在网页界面右键点击“检查”,再点击Network后刷新页面。在第一个文件的Preview中可以找到该网页界面所有的信息,且切换界面时网址会发生变动,说明这是一个静态网页。

(3)观察翻页规律。

除了第一页以外其他页面符合规律:第{i}页:http://www.cffex.com.cn/jystz/index_{i}.html
网站共有95页,为了爬取到所有通知的内容,我们可以构建for循环,但因为第一页不符合规律,因此我们可以采用If语句来构建url:

for i in range(1,96):      if i == 1:          url = 'http://www.cffex.com.cn/jystz/index.html'  #第一页      else:          url = f'http://www.cffex.com.cn/jystz/index_{i}.html'  #随后几页   

二、引入所需的第三方库

代码如下:

import requests   from bs4 import BeautifulSoup   import pandas as pd   

三、请求数据

观察Headers可以发现Request Method为GET,我们可以采用requests库请求数据。代码如下:

url = 'http://www.cffex.com.cn/jystz/index.html'   headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"}           response = requests.get(url, headers=headers)   

但是我们在运行代码后发现请求到的数据是乱码,就需要把响应内容的编码修正成其实际编码。代码如下:

 `response.encoding = response.apparent_encoding#将响应内容的编码修正为其实际编码,防止乱码。    text = response.text#获取网页的HTML文本。`

四、 解析数据

通过观察Elements可以发现我们所需的信息都在‘ul’标签下的class=‘clearFloat’中,我们需要的标题、发布时间和网址都在‘a’标签下,标题作为里面唯一的文本可以采用get_text来获取,通知的网址后缀在’href’中,要加上前缀‘http://www.cffex.com.cn/’才是一个完整的可以直接访问通知网址,时间在‘class=“time comparetime”’中。

代码如下:

soup = BeautifulSoup(text, "html.parser")#使用BeautifulSoup解析网页HTML文本。   li_list = soup.find('ul',class_="clearFloat").find_all('li')#查找包含所有交易所通知的ul标签,并获取其中的所有li标签。   for li in li_list:#遍历所有li标签。        title = li.find('a').get_text()#获取a标签的文本内容,即通知标题。        href = li.find('a').get('href')[1:]#获取a标签的href属性。        hrefs = 'http://www.cffex.com.cn/'+href#获取网址以便直接访问。        time = li.find('a',class_="time comparetime").text#获取发布时间。        item = [title,time,hrefs]#将爬取到的标题、发布时间和网址存入一个列表。        items.append(item)#将列表添加到初始化的items列表里。   

五、 存储数据

利用pandas库将所爬取数据信息存储下来。
代码如下:

df = pd.DataFrame(items,columns=['标题','发布时间','网址'])#将爬取到的数据存入Pandas DataFrame中。   df.to_excel(r"D:\Python\中国金融期货交易所通知.xlsx")# 将结果保存到指定路径的Excel文件中。   

六、 全套代码及运行结果

全套代码如下:

import requests#导入requests库,用于发送HTTP请求。   from bs4 import BeautifulSoup#从bs4库导入BeautifulSoup类,用于解析HTML。   import pandas as pd#导入pandas库,并使用别名pd,用于处理数据并将最终结果保存到Excel文件。   items = []#初始化一个空列表,用于存储爬取到的信息。   for i in range(1,96):       if i == 1:           url = 'http://www.cffex.com.cn/jystz/index.html'  #第一页       else:           url = f'http://www.cffex.com.cn/jystz/index_{i}.html'  #随后几页       headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"}               response = requests.get(url, headers=headers)#使用requests库发送GET请求,获取网页响应。       response.encoding = response.apparent_encoding#将响应内容的编码修正为其实际编码,防止乱码。       text = response.text#获取网页的HTML文本。       soup = BeautifulSoup(text, "html.parser")#使用BeautifulSoup解析网页HTML文本。       li_list = soup.find('ul',class_="clearFloat").find_all('li')#查找包含所有交易所通知的ul标签,并获取其中的所有li标签。       for li in li_list:#遍历所有li标签。           title = li.find('a').get_text()#获取a标签的文本内容,即通知标题。           href = li.find('a').get('href')[1:]#获取a标签的href属性。           hrefs = 'http://www.cffex.com.cn/'+href#获取网址以便直接访问。           time = li.find('a',class_="time comparetime").text#获取发布时间。           item = [title,time,hrefs]#将爬取到的标题、发布时间和网址存入一个列表。           items.append(item)#将列表添加到初始化的items列表里。   df = pd.DataFrame(items,columns=['标题','发布时间','网址'])#将爬取到的数据存入Pandas DataFrame中。   df.to_excel(r"D:\Python\中国金融期货交易所通知.xlsx")# 将结果保存到指定路径的Excel文件中。   

运行结果如下

以上就是“Python爬取中国金融期货交易所通知”的全部内容,希望对你有所帮助。

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。

在这里插入图片描述

二、Python必备开发工具

img

三、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

五、Python练习题

检查学习结果。

img

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

img

最后祝大家天天进步!!

上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。

### 使用Python爬虫抓取东方财富网期货收盘价数据 为了实现这一目标,可以采用`requests`库来发送HTTP请求并接收网页响应,利用`BeautifulSoup`解析HTML文档,以及借助`pandas`处理和存储所获得的数据。 #### 安装必要的库 首先确保安装了所需的第三方库: ```bash pip install requests beautifulsoup4 pandas openpyxl ``` #### 编写爬虫脚本 下面是一个简单的例子展示如何构建一个基本的爬虫程序去获取特定日期范围内的某类期货品种的日线级别收盘价信息[^1]。 ```python import requests from bs4 import BeautifulSoup import pandas as pd def fetch_futures_data(code, start_date, end_date): url = f"http://quote.eastmoney.com/futures/{code}.html" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)', # 可能需要更复杂的headers设置以绕过某些网站的安全机制 } params = { "fields": "date,close", # 请求字段:交易日、收盘价 "start": start_date, "end": end_date } response = requests.get(url=url, headers=headers, params=params) soup = BeautifulSoup(response.text, 'lxml') table_tag = soup.find('table', {'class': 'data-table'}) # 查找包含数据表格标签 rows = [] for tr in table_tag.tbody.find_all('tr'): row = [td.text.strip() for td in tr.find_all('td')] rows.append(row) df = pd.DataFrame(rows, columns=['Date', 'Close']) return df if __name__ == "__main__": code = input("请输入要查询的期货合约代码:") start_date = input("请输入起始日期(格式YYYY-MM-DD): ") end_date = input("请输入结束日期(格式YYYY-MM-DD): ") try: data_frame = fetch_futures_data(code=code, start_date=start_date, end_date=end_date) file_name = f"{code}_closing_prices.xlsx" data_frame.to_excel(file_name, index=False) print(f"成功保存至{file_name}") except Exception as e: print(e) ``` 这段代码定义了一个名为`fetch_futures_data()`的功能函数,它接受三个参数——期货合约代码(`code`)、开始日期(`start_date`) 和 结束日期 (`end_date`) 。该函数会向东方财富网发起GET请求,并指定所需的时间区间与具体想要获取的数据列(这里选择了日期和收盘价)。接着通过解析返回页面中的表格结构读取出相应的数值。最后将结果转换成Pandas DataFrame对象以便进一步操作或直接导出为Excel文件。 请注意,在实际应用过程中可能还需要考虑更多细节问题,例如异常情况下的错误处理逻辑优化、更加灵活多变的目标URL拼接方式等;另外由于网络环境复杂多变加上各站点安全策略的不同,上述方法未必适用于所有场景,必要时需调整相应配置甚至更换其他API接口来进行访问[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值