聯(lián)系我們 - 廣告服務(wù) - 聯(lián)系電話:
您的當(dāng)前位置: > 關(guān)注 > > 正文

世界觀熱點:iframe標(biāo)簽已經(jīng)不見執(zhí)行 如何解決?

來源:CSDN 時間:2022-12-21 19:07:02


【資料圖】

上海銀行間同業(yè)拆借利率在運行過程中發(fā)現(xiàn)iframe標(biāo)簽已經(jīng)不見: 查看元素發(fā)現(xiàn)ifram標(biāo)簽已經(jīng)不見

# In[7]:browser.switch_to.frame("volume10BondDealQuotesEN")data = browser.page_sourcedata

執(zhí)行這個報錯:

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_sourcedata

注釋后發(fā)現(xiàn)獲取table的出現(xiàn)問題了,經(jīng)過debug修改成table[3]改為table[12],為什么是table[12],我用的是PyCharm開發(fā)工具debug查看table如下: 從這個里面去找

import pandas as pdtable = pd.read_html(data)  # table是一個列表,里面有該網(wǎng)頁里的所有表格df = table[12]df

運行結(jié)果是:

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

import pandas as pdtable = pd.read_html(data)  # table是一個列表,里面有該網(wǎng)頁里的所有表格#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位小數(shù)diff

運行后結(jié)果是:

這里面的url_2代碼注釋掉:

from selenium import webdriverimport pandas as pdbrowser = webdriver.Chrome()url = "http://www.shibor.org"browser.get(url)# url_2 = "http://www.shibor.org/shibor/web/html/shibor.html"  # 這個得訪問過上面的網(wǎng)址,才能訪問這個網(wǎng)站# browser.get(url_2)data = browser.page_sourcetable = pd.read_html(data)  # table是一個列表,里面有該網(wǎng)頁里的所有表格df = table[12]# 修改列名df = df[[1, 2, 4]]df.columns = ["期限", "Shibor(%)", "漲跌(BP)"]M_1 = df[df["期限"] == "1M"]["Shibor(%)"]  # 變量命名不可以是1MM_3 = df[df["期限"] == "3M"]["Shibor(%)"]# 計算3M利率 - 1M利率diff = float(M_3) - float(M_1)diff = round(diff, 3)  # 保留3位小數(shù)diff

最后這個地方,如果瀏覽器較新的話,browser.find_element_by_xpath這個地方會報錯,要改成browser.find_element,如下:

# # 補充知識點:瀏覽器同級頁面切換 - switch_to.window()函數(shù)講解# In[27]:from selenium import webdriverbrowser = 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("http://*[@id="1"]/div/h3/a").click()browser.find_element(by=By.XPATH,value="http://*[@id="1"]/div/h3/a").click()handles = browser.window_handles  # 獲取當(dāng)前瀏覽器的所有窗口句柄browser.switch_to.window(handles[-1])  # 切換到最新打開的窗口data = browser.page_source  # 此時獲取的網(wǎng)頁源代碼就是最新打開窗口的內(nèi)容data# In[29]:handles = browser.window_handles  # 獲取當(dāng)前瀏覽器的所有窗口句柄browser.switch_to.window(handles[-1])  # 切換到最新打開的窗口data = browser.page_sourcedata
責(zé)任編輯:

標(biāo)簽:

相關(guān)推薦:

精彩放送:

新聞聚焦
Top