上黄金交易所(手把手地教你用Python自动爬取上海黄金交易所的早午盘金价与银价)
2023年04月18日 13:41
欧易okx交易所下载
欧易交易所又称欧易OKX,是世界领先的数字资产交易所,主要面向全球用户提供比特币、莱特币、以太币等数字资产的现货和衍生品交易服务,通过使用区块链技术为全球交易者提供高级金融服务。
学会使用Python工具来爬取某些网站上的信息,对于平时工作会有很大的帮助,它不仅能极大地提高工作效率,而且还能实现自动化办公。那么,在这里将向大家介绍一下怎样采用Python爬取上海黄金交易所网站上早盘、午盘的金价与银价,并实现每日定时自动化获取。
一、背景描述
对于贵金属行业,有时候销售人员想知道每日黄金或银的价格,平时一般是通过打开上海黄金交易所网站 (https://www.sge.com.cn/) 进行查看。但是,这样是需要人为地每天去打开网站查看了才知,那么,有没有办法可以自动地获取到上面的金价或银价,然后在公司网站上自动显示金价或银价的结果呢?
答案肯定是可以的,下面开始一步一步教大家如何来实现这个功能。
二、Python高版本打包生成的执行文件在服务器上运行出错
首先,先解决Pytho版本问题,代码留到后面才讲,本人之前采用的是python3.9 64位,这是一个较高的版本,通过pyinstaller -F -w goldprice.py 进行打包生成的goldprice.exe执行文件,在本机下面运行无误。但是将这个文件拷至公司内网服务器上运行就出错!error显示为:
Fatal error in launcher:Unable to create process using ;
即无法启动此程序,查询此错误的原因为计算机中丢失api-ms-win-core-path-11-1-0.dll这个文件, 如图1所示。
根据错误提示,分别通过下面两个方法进行了处理,但未成功,两种方法分别说明如下:
1、首先尝试一下最简单的方案,在网上搜索下载api-ms-win-crt-runtime-l1-1-0.dll文件。
下载完成后将api-ms-win-crt-runtime-l1-1-0.dll文件复制到服务器上,位置于C:\Windows\SysWOW64(64位目录)或C:\Windows\System32(32位目录)。但是,拷过去时结果发现本身系统就有这个dll文件,故可以判断并非缺少这个dll文件的原因造成。
2、根据一个类似问题的网站上介绍,需要下载VC的应用程序(包含api-ms-win-core-path-11-1-0.dll的),即 vc_redist.x64.exe 这个应用安装文件来进行安装 , 但是,安装后问题依旧。
因此,通过以上简单的处理后,发现问题无法解决,该怎么办?
三、问题分析
根据前面生成的执行文件,仅在本机上能正常运行,但放至服务器上运行出错,显然不行。毕竟,这个程序是要部署在服务器上来使用的,那么,通过本机的运行环境与服务器运行环境进行对比,得到如下信息:
1、服务器采用的系统是windows2008 R2 64位系统,已经算是非常老的系统。
2、python生成的执行程序在我本机运行环境是基于win10 professional版本。
3、Python版本是3.9版本且为64位。
因此,怀疑是因为打包生成exe文件的python版本过高,而导致生成的exe文件无法独立在原先较老的系统上运行。那么,考虑采取较低版本的python来对其重新打包生成。
四、问题解决
1、下载安装旧版本Python
下载Python3.8.5的32位版本。如图4.1所示:
下载完成后,开始进行安装,我是将其安装在本机的D:\python385目录下面
2、配置Python环境
将Python3.8.5版本安装成功后,打开pycharm。打开获取金价程序 GoldPrice.py, 在pycharm的菜单上,点击file--->Settings-->Project:python-->Python Interpreter. 在Project Interpreter: 下拉框右边,点击“修改”按钮,如下图4.2所示.
在弹出的下拉菜单中,点击“Add..." ,如下图4.3所示
在弹出的画面,如图4.4所示. 选择 Exsting environment
选择好Python3.8.5后,下面图4.5中红色框住的部分一开始是没有安装的。因此,为了金价爬取程序正常运行,需要先对相关库或组件进行安装,点击图4.5中右边的”+“号进行搜索库并安装。
在弹出的窗体,如图4.6所示,输入要安装的组件或库名称,比如:requests, 直接输入 requests, 此时,下面会显示找到的库文件清单,光标定位到所需要安装的库文件上,然后点击左下面的"Install Package" 按钮,即可开始安装组件。
采用相同的方法,依次将需要安装的库进行安装,之后,在图4.7中先点击Apply,再点击OK按钮。
接下来,创建一个打包的批处理文件. 如下图4.8所示.
打包批处理文件名为: scexe2.bat,在其中输入调用的python版本(python3.8.5)的pyinstaller文件来对金价获取程序goldprice.py进行打包。
批处理文件scexe2.bat写好后保存在D:\目录下,直接双击scexe2.bat, 即可开始进行打包,过一会儿就生成了exe文件,默认在c:\dist 目录下面,如图4.9所示.
将生成好的exe文件拷至远程主机中。比如:远程机中d:\eis目录下,如图4.10所示
五、测试生成的打包程序是否正常
在远程服务器上,运行cmd,进入d:\eis,运行goldprice.exe, 如图5.1所示。可见程序运行后无误
这一步无误后,我们就可以在服务器上,点击开始-->任务计划程序,之后创建基本任务,输入任务名称:例如:GetGoldPrice (任意取名,但最好方便记忆), 在希望任务何时开始时,选择“每天”,之后点击“下一步”,设置每天的开始时间,此处将金价获取时间设置早上8:40,在接下来是启动程序,点击下一步即可完成。
注意:在设置过程中的细节。希望任务触发时的条件,请选择“不管用户是否登录都要运行”
下面是设置好后的任务计划,如图5.2所示。
至此,python打包生成的exe文件在远程服务器上成功部署并设置每日8:40及13:30两个时间段定时自动获取。
六、Python爬虫代码
终于到了Python爬取上海黄金交易所网站上数据的核心代码,废话少说,直接贴代码,本人经过调试运行无误。
##爬上海黄金网站上的金价信息
import requests
from bs4 import BeautifulSoup
from bs4 import BeautifulSoup as bf
import pymssql
import re
from lxml import etree
from urllib.request import urlopen
url = 'https://www.sge.com.cn/' ## 上海黄金网
##反爬伪装
##User-Agent: Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4315.4 Mobile Safari/537.36
myheader = {
'User-Agent': 'Chrome/88.0.4315.4'
}
result = requests.get(url, headers=myheader)
html = result.text
soup = BeautifulSoup(html, 'lxml')
# #页面解析
# BeautifulSoup
# print(soup.find_all('div',class_='touziList fs16')) ## soup.find('a',attrs={'class':'fleft'})
gold_list = soup.find_all('div', class_='touziList fs16')
#print('soup=',gold_list[0])
# 金
#_zaopangoldprice=soup.find('span',attrs={'class':'colorRed fs20'}).text ## 上海金早盘价(元/克) ---值
_zaopangoldprice=soup.select("#dataStatistics0 .colorRed")[0].text
# print('_zaopangoldprice=',_zaopangoldprice)
_wupangoldprice=soup.select("#dataStatistics0 .colorRed")[1].text ## 上海金午盘价(元/克) ---值
# print('_wupangoldprice=',_wupangoldprice)
# 银
_zaopanSilverprice=soup.select("#dataStatistics1 .colorRed")[0].text ## 上海银早盘价(元/克) ---值
# print('_zaopanSilverprice=',_zaopanSilverprice)
_wupanSilverprice=soup.select("#dataStatistics1 .colorRed")[1].text ## 上海银午盘价(元/克) ---值
# print('_wupanSilverprice=',_wupanSilverprice)
goldpricedesc = ""
for nu in gold_list:
goldpricedesc = goldpricedesc + str(nu)
# 将爬取的数据写入到SQL表中
db = pymssql.connect(host=".", user="dsds", password="***s", database="gold", charset='utf8')
cursor = db.cursor()
sql = "insert into GoldPriceList(GoldPriceDesc,zaopangoldprice,wupangoldprice,zaopansilverprice,wupansilverprice,Remark) values('"+goldpricedesc+"','"+_zaopangoldprice+"','"+_wupangoldprice+"','"+_zaopanSilverprice+"','"+_wupanSilverprice+"',N'来源于上海黄金交易所')"
# sql = "insert into GoldPriceList(GoldPriceDesc,Remark) values('" + goldpricedesc + "',N'来源于上海黄金交易所')"
cursor.execute(sql)
db.commit()
db.close()
# print('OK!从上海金价网获取当日金价数据完成!')
将以上代码保存为goldprice.py,打开pycharm,调用python3.8.5编译器来进行调试运行。
运行成功后,再通过cmd转入命令行状态下,执行命令:
pyinstaller -F -w goldprice.py (回车)
则自动进行打包,最终生成goldprice.exe可执行文件。
七:自动爬取数据到SQL数据库的结果
通过以上自动化定时设置,每天两个时段就会自动地从上海黄金交易所网站上爬取早午盘数据,无须人为干预,将爬取到的数据自动地插入到服务器数据库中。如图7.1所示.
至此,一个完整的Python自动爬取上海黄金交易所网站上的早午盘金银价格数据,就这样圆满介绍完毕。
如果有不明白的地方或需要源码的朋友,可以关注我并在评论区下方进行留言,我将一一回复,谢谢!
推荐阅读
-
国际虚拟货币投资人(国家对虚拟币从业人员怎么定罪)
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...
-
虚拟币平台怎么下载的 虚拟币平台怎么下载的啊
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...
-
花火虚拟货币?神机花火泽丽炫彩如何获得
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...
-
虚拟数字货币内容有哪些(虚拟数字货币内容有哪些呢)
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...
-
虚拟货币网站建设(正规的虚拟币交易平台怎么判断)
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...
-
虚拟数字货币2022(虚拟数字货币)
1970-01-01
图4.7 安装后点击Apply及OK按钮接下来,创建一个打包的批处理文件. 如下图4.8所示.打包批处理文件名为: sc...