簡體   English   中英

嘗試/除未按預期工作:“Except”錯誤消息附加到傳遞結果

[英]Try/except not working as expected: “Except” error message is appended to passing result

我的代碼旨在在網頁上找到一個圖表並從中創建一個用於網絡爬行的鏈接。 如果未找到圖表,則我已放入 try/except 以打印帶有相應(播放器)鏈接的消息,以便在未找到時繼續下一個。

它來自一個足球估值網站,我已經減少了兩名球員的名單以進行調試:一名是 Kylian Mbappé(他的頁面上有一張圖表並且應該通過),另一名是 Ansu Fati(他沒有)。 嘗試使用 BeautifulSoup 從他的個人資料中獲取 Ansu Fati 的圖形標簽會導致NoneType錯誤。

這里的問題是 Mbappé 的圖形鏈接確實被拾取以在代碼中進行下游處理,但是 except 子句中的“except”錯誤/鏈接消息也被打印到控制台。 這應該只適用於安蘇·法蒂。

這是代碼

final_url_list = ['https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229','https://www.transfermarkt.com/ansu-fati/profil/spieler/466810']

for i in final_url_list:

    try:
        int_page = requests.get(i, headers = {'User-Agent':'Mozilla/5.0'}).text

    except requests.exceptions.Timeout:
        sys.exit(1)

    parsed_int_page = BeautifulSoup(int_page,'lxml')


    try:
        graph_container = parsed_int_page.find('div', class_='large-7 columns small-12 marktwertentwicklung-graph')
        graph_a = graph_container.find('a')
        graph_link = graph_a.get('href')
        final_url_list.append('https://www.transfermarkt.us' + graph_link)
    except:
        pass
        print("Graph error:" + i)

我嘗試使用 PyCharm 的調試來查看解釋器是如何完成這些步驟的,並且似乎整個 except 子句都被跳過了,但是當我在控制台中運行它時,兩者都發布了“圖形錯誤:鏈接”。 我不確定 try/except 問題的代碼以這種方式表現有什么問題。

except None:

正在尋找類型為None的異常,這是不可能的。

嘗試將該行更改為

except AttributeError:

這樣做會產生以下 output:

Graph error:https://www.transfermarkt.com/ansu-fati/profil/spieler/466810
Graph error:https://www.transfermarkt.us/kylian-mbappe/marktwertverlauf/spieler/342229

這里還有一個額外的問題,您正在修改您正在迭代的列表,這不僅是不好的做法,而且會導致您看到的意外行為。

因為您要附加到您正在迭代的列表中,所以您將為 url 添加一個您實際上不想抓取的迭代。 要解決此問題,請將腳本中的前幾行更改為:

url_list = ['https://www.transfermarkt.us/kylian-mbappe/profil/spieler/342229','https://www.transfermarkt.com/ansu-fati/profil/spieler/466810']
final_url_list = []

for i in url_list:

這樣,您將圖表鏈接附加到不同的列表,並且您不會嘗試抓取不應該抓取的鏈接。 這會將所有“圖形鏈接”放入final_url_list

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM