一、观察网页
(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必备开发工具
三、Python视频合集
观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
四、实战案例
光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
五、Python练习题
检查学习结果。
六、面试资料
我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
最后祝大家天天进步!!
上面这份完整版的Python全套学习资料已经上传至CSDN官方,朋友如果需要可以直接微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】。