大家好,这里是滑稽研究所,干活了干活了。本期我需要爬取集思录网站的可转债等权指数里成交额的数据。
我们浏览整个网页之后发现曲线中的数据会以表格的形式出现在网页下方,如下。
对比数据之后发现表格数据与曲线数据相等。那我们直接爬取表格里的数据。通过检查网页源代码之后发现,可以直接知道数据,也就是说不需要抓取json数据了。
进一步观察数据发现,这些数据并不是像往常一样放在一个个规范的HTML标签中的,和在开发者模式中呈现的形式不同。
但爬取下来的网页是源代码的形式,因此判断使用xpath是无法正确的匹配到我们需要的数据的。因此这次选择采用正则表达式的方式来匹配数据。到这里思路整理完毕,剩下的就是对数据的筛选以及一些格式上的转换,我们都放在代码中处理。
源代码:
from bs4 import BeautifulSoup
import requests
import re
web_url = 'https://www.jisilu.cn/data/cbnew/cb_index/'
header = {
"User-Agent": "Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.133 Safari/534.16"}
html = requests.get(url=web_url, headers=header).text # 不加text返回的是response,加了返回的是字符串
Soup = BeautifulSoup(html, "lxml")
xxx = str(Soup)
res1 = re.findall('date.*', xxx)
date = res1[0].replace('date = ', '').replace('\'', '')
date = date.split(',')
#print(date)
# 匹配成交额
res2 = re.findall('volume.*]', xxx)
vol = res2[0].replace('volume\' : ', '')
vol = vol.split(',')
#print(vol)
zipped = list(zip(date, vol))
print('单位亿元。')
for i in zipped:
print(i)
print(input('输入q之后,回车退出程序:'))
因为最后要打包成exe文件,所以最后一行代码是用来保证程序在cmd中运行完不会闪退,当然你也可以选择使用time模块。下面是程序运行结果。
经验证数据无误,原数据是3位有效小数,页面上是取了2位。至此任务完成。只需单击exe文件,程序就会自动运行。简单好用。