煎蛋網(wǎng)站 很多朋友都反應(yīng)學(xué) python 語言太枯燥,,學(xué)不進(jìn)去,,其實學(xué)語言最好的方法是自己用所學(xué)的語言做項目,在項目中學(xué)習(xí)語言的用法,。今天給大家?guī)淼捻椖渴怯?python3 爬取煎蛋網(wǎng)妹子的圖片,。圖片質(zhì)量還不錯,我放兩張圖片大家感受下,。 這個項目用了 requests + selenium + beautifulsoup 庫對網(wǎng)站的圖片進(jìn)行抓取,。接下來我就,,給大家一步步解析一下,怎么用 python 爬蟲爬取圖片并下載的,。 爬取結(jié)果 以上就是爬取的結(jié)果,通過運行 meizi.py 代碼,就可以把圖片保存在我指定的目錄下,,如果沒有此目錄,,就用程序自動創(chuàng)建目錄,爬取的所有圖片都保存在此目錄下,。 程序構(gòu)造 程序主要是由 6 個函數(shù)組成:
程序思路
源代碼分析 我們通過f12調(diào)試頁面,,看到圖片的鏈接,,發(fā)現(xiàn)此鏈接并沒有在源代碼中,我們推測,,圖片應(yīng)該是通過 js 加載的,,對于需要 js 才能加載出來的網(wǎng)站,我們就可以利用 selenium 的自動化測試請求庫來進(jìn)行加載,。利用 selenium 請求可以模擬真實瀏覽器訪問,。 1browser = webdriver.Chrome()2wait = WebDriverWait(browser, 3) 利用 selenium 請求網(wǎng)頁需要下載 chrome 驅(qū)動放在 python 安裝目錄下。 分頁鏈接分析 1def get_page():2 base_url = 'http://jandan.net/ooxx/' #第一次進(jìn)入的原始地址3 soup = BeautifulSoup(get_html(base_url), 'lxml') #解析原始地址4 current_pages=soup.select('.cp-pagenavi .current-comment-page')[0].get_text()[1:-1] #取出當(dāng)前頁面字段5 urllist = []6 for page in range(1,int(current_pages)+1):7 real_url=base_url+'page-'+str(page)+'#comments' #拼出分頁地址8 urllist.append(real_url)9 return urllist #返回所有分頁地址列表 原始鏈接 base_url = 'http://jandan.net/ooxx/',,當(dāng)我們點擊下一頁時,,發(fā)現(xiàn)在原始鏈接的后面加了一段「page-52#comments」。 其中加的數(shù)字,,就是表示現(xiàn)在所在的頁數(shù),,通過 BeautifulSoup 庫對頁面進(jìn)行解析,用選擇器提取表示頁數(shù)的字段「current-comment-page」,,加入到原始鏈接中進(jìn)行拼接,。 創(chuàng)建目錄 1def get_pic():2 for url in get_page():3 mkdir()4 html=get_html(url)5 soup=BeautifulSoup(html,'lxml')6 allimgs=soup.select('div .text p img')7 allimgs=re.findall('src='(.*?)'',str(allimgs))8 download(allimgs)9 print('下載完畢!') 用 os.path.exists 方法來個判斷,,如果不存在此目錄就創(chuàng)建一個,如果存在就忽略,。 提取圖片 1def get_pic():2 for url in get_page():3 mkdir()4 html=get_html(url)5 soup=BeautifulSoup(html,'lxml')6 allimgs=soup.select('div .text p img')7 allimgs=re.findall('src='(.*?)'',str(allimgs))8 download(allimgs)9 print('下載完畢,!') 用 BeautifulSoup 解析源碼,用選擇器循環(huán)提取圖片的鏈接,,并調(diào)用 download() 函數(shù)下載圖片直至下載所有圖片,。 優(yōu)化改進(jìn) 本次的程序還有一些不足的地方,比如利用 selenium 庫在爬取的時候非常的慢,,每頁我還設(shè)置了 3 秒等待時間,,這部分待優(yōu)化。還有所有頁面的圖片都保存在一個目錄下,,沒有分開保存,,這部分也可以優(yōu)化。 這波教程不點個關(guān)注,,說不過去吧,?哈哈。這個網(wǎng)站有很多福利,我只能說大家注意身體啊,。 |
|