[問題] 關於BeautifulSoup遇到沒有資料的時候

看板Python作者 (渣)時間9年前 (2016/11/07 22:56), 9年前編輯推噓4(401)
留言5則, 3人參與, 最新討論串1/1
請問一下各位前輩 小弟在用BeautifulSoup遇到了點問題 就是在擷取一個網站資訊的時候會遇到某一個沒有資訊 然後再繼續下去之類的比如像這樣子 resl = soupls.find_all("span",itemprop="ratingValue") print (resl) 如果這樣下了話會產生這樣的結果 [<span itemprop="ratingValue">5.00</span>] [] [<span itemprop="ratingValue">4.73</span>] [<span itemprop="ratingValue">4.10</span>] 然後如果我只要解取 5.00的部分就必須這樣子 resl = soupls.find_all("span",itemprop="ratingValue")[0].text print (resl) 但是如果遇上了沒資料的地方就會產生錯誤 IndexError: list index out of range 想請教一下有沒有辦法將空白的資訊帶入一個"0" 另外我有試著用try做,但是可能是語法的問題一直都出現錯誤 是因為我在for裡面做不行嗎? 感謝前輩的指教 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.251.95.231 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1478530587.A.D06.html ※ 編輯: brightsu (111.251.95.231), 11/07/2016 22:58:05

11/07 23:12, , 1F
你的for迴圈跑次數超過了,才會有index out of range
11/07 23:12, 1F

11/07 23:13, , 2F
所以是要改for的迴圈次數,而不是空著的補0
11/07 23:13, 2F
抱歉,可能是我表達有點問題 我指的是說在某個網頁裡面他有這個位置 但是在另一個相同類型的網頁沒有這個位置 所以變成說當迴圈跑到沒有的地方的時候會產生錯誤 例如說這個網頁 http://kakaku.com/item/J0000016829/ 裡面有一個滿足度 4.35 但是這個網頁卻是募集中 http://kakaku.com/item/K0000877088/ 所以當我把所有的網頁一頁一頁的爬的時候會遇到有些是有滿足度有些沒有 ※ 編輯: brightsu (114.45.115.72), 11/08/2016 07:42:27

11/08 09:59, , 3F
所以你的try-except寫成怎樣 沒有作用?
11/08 09:59, 3F

11/08 10:56, , 4F
重點是不能讓迴圈跑到沒有的地方,這個行為一定噴error
11/08 10:56, 4F

11/08 14:36, , 5F
加個if判斷長度不為0再做吧
11/08 14:36, 5F
文章代碼(AID): #1O89ORq6 (Python)
文章代碼(AID): #1O89ORq6 (Python)