我正在構建一個網路爬蟲。下面的這段代碼有效,這意味著它實際上找到了我正在尋找的內容,這是文章中的主要圖片(始終是第一張)。
picture = []
for item in body.find_all('img'):
picture.append(item['src'])
break
有沒有更簡單、更順暢的方法來做我正在做的事情?我試過了:
picture = body.find('img', ['src'])
它只回傳“無”。
uj5u.com熱心網友回復:
試試這個:
picture_src = body.find('img').attrs['src']
print(picture_src)
uj5u.com熱心網友回復:
picture = []
for item in body.find_all('img'):
picture.append(item['src'])
break
讓我們通過它。首先,“休息”是不必要的。我們可以從“for”回圈的末尾掉下來。
picture = []
for item in body.find_all('img'):
picture.append(item['src'])
好的,現在這里的 Python 約定是使用評論中建議的 Mathias 之類的串列理解。
串列理解示例:
doubled = [item * 2 for item in [1, 2, 3, 4]]
print(doubled)
會給:
[2, 4, 6, 8]
與 Mathias 解決方案相比:
pictures = [item['src'] for item in body.find_all('img')]
請注意,如果有任何沒有 src 的 img 這也是原始解決方案中的潛在缺陷,這將失敗。
pictures = [item['src'] for item in body.find_all('img') if 'src' in item]
這實際上比我通常想要一行更復雜,因為稍后閱讀這段代碼需要幾秒鐘的時間來思考它。如果您可以信任過去,則可以輕松解決:
# list of all img src attributes
pictures = [item['src'] for item in body.find_all('img') if 'src' in item]
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/462933.html
