beautifulsoup的find_all用法,爬取斗圖網(wǎng)圖片

弄不清楚findAll和find_all的區(qū)別。

幾點(diǎn)收獲
  • 使用 find_all取獲取目標(biāo)鏈接
  • 使用urllib庫下載圖片,貌似更簡便
  • 獲取圖片鏈接地址時(shí)要注意,后面一個(gè)圖片往往是未加載完成時(shí)顯示的“正在加載”的圖片,要注意區(qū)分
  • 爬回的鏈接中有個(gè)把不符合條件,截取鏈接最后幾個(gè)字符 用 in 判斷是否是jpg或gif,不是就直接pass
  • 其他方面沒有難度
  • 下次多選取頁碼范圍,下載圖片的時(shí)候可以用多線程。
import requests
from urllib import request
from bs4 import BeautifulSoup
#構(gòu)建目標(biāo)網(wǎng)站鏈接
urls=["http://www.doutula.com/photo/list/?page={}".format(str(i)) for i in range(1,3)]
def get_srcs(url):   #獲取圖片鏈接
    src=[]
    html=requests.get(url)
    soup=BeautifulSoup(html.text,'lxml')
#以下為最關(guān)鍵一句
    srcs=soup.find_all('img',attrs={'class':'img-responsive lazy image_dta'})
    for i in srcs:
        src.append(i['data-original'])  #返回?cái)?shù)組,想用yield,但是沒弄明白。
    return src

def down_pic(src):   #下載圖片
    root='d:/py/spider/doutuphoto/'
    if src[-3:] in ['jpg','gif']:
        request.urlretrieve(src,filename=root+src.split('/')[-1])
    else:
        pass

def main():
    for url in urls:
        for i in get_srcs(url):   #此處可加多線程
            down_pic(i)
            print (i)
if __name__=='__main__':
    main()
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,856評論 25 709
  • 在中國,婆媳關(guān)系永遠(yuǎn)是家庭關(guān)系中不可忽略的一部分。 在二十世紀(jì)早期,中低層家庭都還是兄弟姐妹不分家,一大家子人一起...
    echo_辛閱讀 226評論 1 1
  • 豬肝瘦肉粥 補(bǔ)鋅補(bǔ)血,將豬肝沖洗后放在盆里浸泡1小時(shí),直到除盡殘血,中途最好換水,這樣可以去掉豬肝中殘留的毒素。 ...
    大果果ly閱讀 230評論 0 0

友情鏈接更多精彩內(nèi)容