17行python代碼抓取劉昊然圖片之家的寫真
用python來爬取網頁信息是很簡便的。因爲它有很多庫來幫助我們實現我們想要的功能。本實驗用到的庫有:requests和bs4中的BeautifulSoup。這兩個庫的安裝過程如下:
#按住win+R,打開cmd,然後依次輸入:
pip install bs4
pip install requests
在windows下爬取的話,還要檢查自己是否安裝了lxml。如果沒安裝,也可以直接用pip安裝:
pip install lxml
安裝好庫之後呢,就可以開始爬取劉昊然的寫真啦。
首先找到圖片之家中劉昊然壁紙的網址:http://www.tupianzj.com/mingxing/xiezhen/liuhaoran/
由上面網址,我們可以翻譯它的信息:http://圖片之家/明星/寫真/劉昊然
所以,如果你要抓取其他的明星寫真,只需要改變一下網址的最後一個就可以啦!打開網址,右鍵,點擊“檢查”,然後你就可以看到這個網頁的源代碼啦。然後分析源代碼,發現圖片都存在下圖的1中,而圖片的存放格式都如下圖的2、3那樣:
找到規律後,我們就可以敲代碼啦:
#導入庫
from bs4 import BeautifulSoup
import requests
#給定網址
URL = "http://www.tupianzj.com/mingxing/xiezhen/liuhaoran/"
#抓取該URL的內容
html = requests.get(URL).text
#解析html,並存放在soup中
soup = BeautifulSoup(html, 'lxml')
#找到上面說的圖中1的位置,因爲圖片都在它之中
img_ul = soup.find_all('div', {"id": "main"})
#創建img文件夾來存放抓取到的圖片
import os
os.makedirs('./img/',exist_ok=True)
#由上圖的2、3可知道圖片的具體位置是在’img src‘中,所以先把所有的img找出來,再一一訪問
imgs = ul.find_all('img')
#一一訪問圖片並下載
for img in imgs:
url = img['src']
r = requests.get(url, stream=True)
image_name = url.split('/')[-1]
with open('./img/%s' % image_name, 'wb') as f:
for chunk in r.iter_content(chunk_size=128):#以128字節大小存放
f.write(chunk)
print('Saved %s' % image_name)
Saved 9-1P31G623590-L.jpg
Saved 9-1P3131419500-L.jpg
Saved 9-1P3031414430-L.jpg
Saved 9-1P3021543180-L.jpg
Saved 9-1P3021123440-L.jpg
Saved 9-1P22G043450-L.jpg
Saved 9-1P1291JR50-L.jpg
Saved 9-1P1221131480-L.jpg
Saved 9-1P1051036070-L.jpg
Saved 9-1P1051001240-L.jpg
Saved 9-1G219115I70-L.jpg
Saved 9-1G1151100100-L.jpg
Saved 9-1G0301436130-L.jpg
Saved 9-1G0041543170-L.png
Saved 9-1FZ91523210-L.png
Saved 9-1FHG13P60-L.png
Saved 9-1F5201911020-L.jpg
Saved 16-1612191430140-L.jpg
Saved 16-160P11A0460-L.jpg
Saved 9-16062G41001227.jpg
Saved 16-1605301305090-L.jpg
Saved 16-16051Q442070-L.jpg
Saved 16-16051Q416050-L.jpg
Saved 16-1605161012270-L.jpg
Saved 16-1604131Z0240-L.jpg
Saved 9-16012Q120410-L.jpg
Saved 9-151224200S00-L.jpg
至此,圖片抓取完啦,打開img文件夾看看:
看,圖片都下載到這啦。隨便點開一張:
帥帥的劉昊然!