日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python BeautifulSoup [解決方法] TypeError

系統(tǒng) 1952 0

在python的Beautiful Soup 4 擴(kuò)展庫的使用過程中出現(xiàn)了

TypeError: list indices must be integers or slices, not str

這個(gè)錯(cuò)誤,這里就分析一下為什么會報(bào)錯(cuò)以及如何解決。

這個(gè)錯(cuò)誤的意思是'類型錯(cuò)誤:list的索引必須是'integers'或者'slices'不能是'str'

我出現(xiàn)錯(cuò)誤的代碼:

            
#引入庫
from bs4 import BeautifulSoup
#讀取頁面
soup = BeautifulSoup(open('index.html'))
#獲取標(biāo)簽
img_tag = div.select("img")
#獲取標(biāo)簽屬性(這里報(bào)錯(cuò))
src = img_tag['src']
#輸出
print(src)

          

經(jīng)過檢查對比后我發(fā)現(xiàn)錯(cuò)誤原因

就是獲取標(biāo)簽時(shí)獲取的是list數(shù)據(jù)而不是tag

主要原因如下:

主要就是獲取的內(nèi)容和自己認(rèn)為的有偏差。

也就是find()和find_all(),select()和select_one()的區(qū)別。

當(dāng)使用

            
find()
select_one()
          

時(shí),獲得的是一個(gè)標(biāo)簽

類型為

            
          

所以可以使用tag['class']取值

當(dāng)使用

            
find_all()
select()
          

時(shí),獲得的是組標(biāo)簽(就算只有一個(gè)標(biāo)簽也是一組)

類型為

            
#find_all()的返回值類型

            
              
#select()的返回值類型

              
              
            
          

這時(shí),我們要取值就需要先定位是list(ResultSet)中的那個(gè)標(biāo)簽在取值

例如tag[0]['class']

解決方法

方法一:

            
#引入庫
from bs4 import BeautifulSoup
#讀取頁面
soup = BeautifulSoup(open('index.html'))
#獲取標(biāo)簽
img_tag = div.select("img")
#獲取標(biāo)簽屬性(這里有改動)
src = img_tag[0]['src']
#輸出
print(src)
          

因?yàn)槲抑理撁嬷械慕Y(jié)構(gòu)可以確保獲得的第一個(gè)bag為我需要的標(biāo)簽。
所以使用src = img_tag[0]['src']來獲取屬性信息。

方法二:

            
#引入庫
from bs4 import BeautifulSoup
#讀取頁面
soup = BeautifulSoup(open('index.html'))
#獲取標(biāo)簽
img_tag = div.select_one("img")
#獲取標(biāo)簽屬性(這里有改動)
src = img_tag['src']
#輸出
print(src)
          

同上理,這樣修改也是可以成功的。

出現(xiàn)這種問題還是因?yàn)樽约翰挥眯模€是要時(shí)刻提醒自己。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 壶关县| 江门市| 海林市| 边坝县| 奇台县| 峨眉山市| 绥芬河市| 安丘市| 崇州市| 金坛市| 吉木萨尔县| 昌宁县| 隆昌县| 敖汉旗| 繁昌县| 安义县| 扎鲁特旗| 济南市| 秦皇岛市| 利津县| 康保县| 黎平县| 正阳县| 湟中县| 徐州市| 弥渡县| 呼玛县| 禹州市| 自贡市| 长垣县| 子长县| 阳城县| 武安市| 河间市| 安阳县| 西充县| 巴中市| 沾化县| 油尖旺区| 石林| 治县。|