Python爬蟲爬取網站圖片
此次python3
主要用requests
,解析圖片網址主要用beautiful soup
,可以基本完成爬取圖片功能,
爬蟲這個當然大多數人入門都是爬美女圖片,我當然也不落俗套,首先也是隨便找瞭個網址爬美女圖片
from bs4 import BeautifulSoup import requests if __name__=='__main__': url='http://www.27270.com/tag/649.html' headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} req = requests.get(url=url, headers=headers) req=requests.get(url=url,headers=headers) req.encoding = 'gb2312' html=req.text bf=BeautifulSoup(html,'lxml') targets_url=bf.find('div',class_='w1200 oh').find_all('a',target='_blank') for each in targets_url: img_req=requests.get(url=each.get('href'),headers=headers) img_req.encoding = 'gb2312' html = img_req.text bf = BeautifulSoup(html, 'lxml') img_url = bf.find('div', class_='articleV4Body').find('img')['src'] name=each.img.get('alt')+'.jpg' path=r'C:\Users\asus\Desktop\新建文件夾' file_name = path + '\\' + name try: req1=requests.get(img_url,headers=headers) f=open(file_name,'wb') f.write(req1.content) f.close() except: print("some error")
期間遇到的一個情況是,它到訪問img_url
的時候總報錯連接主機失敗,我開始以為是網址加瞭反爬之類的,但是我單獨拿出來一個網址,卻可以很容易的訪問,百思不得其解,最後咨詢大佬告訴我把img_url
的每一個都試試看,可能是某一個網址出瞭問題,找瞭找果然是有個叛徒,產生的img_url
中第二個網址無法訪問,怪不得老報錯,我應該多試幾個的,一葉障目
我同時也是個火影迷,掌握基本方法後準備試試爬取火影圖片,也是網址找瞭個網址:
http://desk.zol.com.cn/dongman/huoyingrenzhe/
可以看到火影的圖片是以圖集的形式儲存的,所以這個下載就比剛才的稍微多瞭一點步驟
查看網站源代碼容易發現,圖集的鏈接所在都是class='photo-list-padding'
的li標簽裡,且鏈接沒有補全
點開其中一個鏈接, http://desk.zol.com.cn/dongman/huoyingrenzhe/(前面為瀏覽器自動補全,在代碼裡需要自己補全)
可以看到圖片的下載地址以及打開本圖集下一張圖片的鏈接
瞭解完網站的圖片構造後動手寫代碼,我們篩選出圖集的鏈接後,通過圖集的鏈接找到第一張圖片下載地址和第二張圖片的鏈接,通過第二張的鏈接找到第二張的下載地址和第三張的鏈接,循環下去,直到本圖集到底,接著開始第二個圖集,直到所有圖集下載完畢,代碼如下,為瞭方便循環,我們集成下載圖片功能為download
函數,解析圖片網址功能為parses_picture
:
from bs4 import BeautifulSoup import requests def download(img_url,headers,n): req = requests.get(img_url, headers=headers) name = '%s'%n+'='+img_url[-15:] path = r'C:\Users\asus\Desktop\火影壁紙1' file_name = path + '\\' + name f = open(file_name, 'wb') f.write(req.content) f.close def parses_picture(url,headers,n): url = r'http://desk.zol.com.cn/' + url img_req = requests.get(url, headers=headers) img_req.encoding = 'gb2312' html = img_req.text bf = BeautifulSoup(html, 'lxml') try: img_url = bf.find('div', class_='photo').find('img').get('src') download(img_url,headers,n) url1 = bf.find('div',id='photo-next').a.get('href') parses_picture(url1,headers,n) except: print(u'第%s圖片集到頭瞭'%n) if __name__=='__main__': url='http://desk.zol.com.cn/dongman/huoyingrenzhe/' headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36"} req = requests.get(url=url, headers=headers) req=requests.get(url=url,headers=headers) req.encoding = 'gb2312' html=req.text bf=BeautifulSoup(html,'lxml') targets_url=bf.find_all('li',class_='photo-list-padding') n=1 for each in targets_url: url = each.a.get('href') parses_picture(url,headers,n) n=n+1
期間遇到的一個情況是每次一個圖集到底的時候,就會產生報錯,因為找不到下一張圖片的鏈接瞭,於是我便加上try語句來捕捉這一報錯,讓程序繼續下去,有瞭bf果然比正則表達式簡單,可以通過標簽屬性很方便的找到想要的信息。
下載情況
到此這篇關於Python爬蟲爬取網站圖片的文章就介紹到這瞭,更多相關Python爬取網站圖片內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 使用Python爬取小姐姐圖片(beautifulsoup法)
- 利用python實現查看溧陽的攝影圈
- Python爬取求職網requests庫和BeautifulSoup庫使用詳解
- Python 批量下載陰陽師網站壁紙
- 基於pycharm的beautifulsoup4庫使用方法教程