弄不清楚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ù)。