Python实战系列-上海银行间同业拆借利率最新报错解决方案

不管现实多么惨不忍睹,都要持之以恒地相信,这只是黎明前短暂的黑暗而已。不要惶恐眼前的难关迈不过去,不要担心此刻的付出没有回报,别再花时间等待天降好运。真诚做人,努力做事!你想要的,岁月都会给你。Python实战系列-上海银行间同业拆借利率最新报错解决方案,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

上海银行间同业拆借利率在运行过程中发现iframe标签已经不见:
在这里插入图片描述
查看元素发现ifram标签已经不见
在这里插入图片描述

# In[7]:


browser.switch_to.frame('volume10BondDealQuotesEN')
data = browser.page_source
data

执行这个报错:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[id="volume10BondDealQuotesEN"]"}
(Session info: chrome=105.0.5195.127)

如何解决?注释掉browser.switch_to.frame这行代码

# In[7]:


#browser.switch_to.frame('volume10BondDealQuotesEN')
data = browser.page_source
data

注释后发现获取table的出现问题了,经过debug修改成table[3]改为table[12],为什么是table[12],我用的是PyCharm开发工具debug查看table如下:
在这里插入图片描述
从这个里面去找

import pandas as pd
table = pd.read_html(data)  # table是一个列表,里面有该网页里的所有表格
df = table[12]

df

运行结果是:
在这里插入图片描述

这里面有用的是第2、3、5列

import pandas as pd
table = pd.read_html(data)  # table是一个列表,里面有该网页里的所有表格
#df = table[3]
df = table[12]

# 提取所需列,并修改列名
df = df[[1, 2, 4]]
df.columns = ['期限', 'Shibor(%)', '涨跌(BP)']

M_1 = df[df['期限'] == '1M']['Shibor(%)']
M_3 = df[df['期限'] == '3M']['Shibor(%)']

# 计算3M利率 - 1M利率
diff = float(M_3) - float(M_1)
diff = round(diff, 3)  # 保留3位小数

diff

运行后结果是:
在这里插入图片描述

这里面的url_2代码注释掉:

from selenium import webdriver
import pandas as pd
browser = webdriver.Chrome()
url = 'http://www.shibor.org'
browser.get(url)

# url_2 = 'http://www.shibor.org/shibor/web/html/shibor.html'  # 这个得访问过上面的网址,才能访问这个网站
# browser.get(url_2)

data = browser.page_source

table = pd.read_html(data)  # table是一个列表,里面有该网页里的所有表格
df = table[12]

# 修改列名
df = df[[1, 2, 4]]
df.columns = ['期限', 'Shibor(%)', '涨跌(BP)']

M_1 = df[df['期限'] == '1M']['Shibor(%)']  # 变量命名不可以是1M
M_3 = df[df['期限'] == '3M']['Shibor(%)']

# 计算3M利率 - 1M利率
diff = float(M_3) - float(M_1)
diff = round(diff, 3)  # 保留3位小数

diff

最后这个地方,如果浏览器较新的话,browser.find_element_by_xpath这个地方会报错,要改成browser.find_element,如下:

# # 补充知识点:浏览器同级页面切换 - switch_to.window()函数讲解

# In[27]:


from selenium import webdriver
browser = webdriver.Chrome()
url = 'https://www.baidu.com/s?rtt=1&tn=news&word=阿里巴巴'
browser.get(url)

# 模拟点击第一条新闻链接,会新打开一个浏览器窗口展示该新闻详情 //*[@id="1"]/div/h3/a
#browser.find_element_by_xpath('//*[@id="1"]/div/h3/a').click()
browser.find_element(by=By.XPATH,value='//*[@id="1"]/div/h3/a').click()

handles = browser.window_handles  # 获取当前浏览器的所有窗口句柄
browser.switch_to.window(handles[-1])  # 切换到最新打开的窗口

data = browser.page_source  # 此时获取的网页源代码就是最新打开窗口的内容
data


# In[29]:


handles = browser.window_handles  # 获取当前浏览器的所有窗口句柄
browser.switch_to.window(handles[-1])  # 切换到最新打开的窗口

data = browser.page_source
data

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/164026.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之家——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!