python爬蟲爬取圖片--Neets劇照
這一期寫的內容主要是python圖片的爬蟲方法,網上主要都是爬美女圖為主,這一回我們以爬Neets這個看劇神器中2017年所有收錄的國產劇的海報封面為一個任務。主要還是基於python3的,然後用到的庫主要有beautifulsoup。接下來直接上代碼:
import urllib.request,os nfrom bs4 import BeautifulSoup #nurl="http://neets.cc/category?state=&page={}&type=tv&country=china&endYear=2017&startYear=2017&week=&order=" n
#這個url可以看到主要是篩選了中國,2017兩個選項,共有18頁,點擊翻頁後觀察到url變化的只有page={}這一段,故而這裡後續通過format進行替換,可以實現按照page頁變換逐一進行訪問,爬取這18頁的視頻信息
os.chdir(C:UsersAdministratorphoto) n
#調用os庫,將當前目錄指向我要保存的文件夾的位置
t=1 nfor i in range(19):n url_visit=url.format(i)n head={}n head[User-Agent] = Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36n req = request.Request(url_visit,headers=head) n content=request.urlopen(req).read().decode(utf8)n soup=BeautifulSoup(content,html.parser)n pictures=soup.find_all(img)n
#這一段主要是給爬蟲程序添加一個請求頭,模仿瀏覽器進行訪問,這樣可以防止被識別為爬蟲程序,其餘的則是常規的利用beautifulsoup解析html,可以直接照搬過來。其中通過F12檢查網頁得到,那個網頁中所有的電視劇的圖片信息,都簡單的包裹在img標籤中,所以通過beautifulsoup中的find_all方法可以找出所有的img標籤
此時可以在這段代碼下添加:
for pic in pictures:n print(pic) n
我們可以看到得到的就是我們想要的所有的圖片的信息,只需要解析其中的src,則就是我們要的圖片的下載地址
for pic in pictures:n links=[]n a=pic.get(src)n links.append(a)n for link in links:n try:n pic_name = str(t) + .jpgn t+=1n urllib.request.urlretrieve(link, pic_name)n except:n passn
這一段最主要的是構建一個links列表,將每行pic中的src地址取出(通過get方法),然後利用append逐一將得到的src地址添加到links列表中。最後利用urllib.request.urlretrieve將地址傳入,下載圖片並保存,urllib.request.urlretrieve主要用兩個參數,第一個為url鏈接參數,第二個為圖片命名參數。
完整代碼如下: nimport urllib.request,osnfrom bs4 import BeautifulSoupnurl="http://neets.cc/category?state=&page={}&type=tv&country=china&endYear=2017&startYear=2017&week=&order="nos.chdir(C:UsersAdministratorphoto)nt=1nfor i in range(17):n url_visit=url.format(i)n head={}n head[User-Agent] = Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36n req = request.Request(url_visit,headers=head)n content=request.urlopen(req).read().decode(utf8)n soup=BeautifulSoup(content,html.parser)n pictures=soup.find_all(img)n for pic in pictures:n links=[]n a=pic.get(src)n links.append(a)n for link in links:n try:n pic_name = str(t) + .jpgn t+=1n urllib.request.urlretrieve(link, pic_name)n except:n passn n
這是下載下來的圖片的情況,大家也可以測試一下:
初次寫圖片爬蟲,主要是文件的讀寫,以及如何解析到自己想要爬取的圖片的url,通過構建一個list進行循環遍歷下載是最主要的需要熟練掌握的地方。
推薦閱讀:
※Python and Visual C++ Build Tools
※Python 做高頻交易系統適合哪個級別的延遲?
※如何在visual studio上寫 python?
※python with提前退出:坑與解決方案