一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片

【一、項目背景】

王者榮耀作為當下最火的遊戲之一,裏面的人物信息更是惟妙惟肖,但受到官網的限制,想下載一張高清的圖片很難。(圖片有版權)。

以彼岸桌面這個網站為例,爬取王者榮耀圖片的信息。

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
【二、項目目標】

實現將獲取到的圖片批量下載。

【三、涉及的庫和網站】

1、網址如下:

https://www.netbian.com/s/wangzherongyao/index.htm/

2、涉及的庫:requests、lxml

【四、項目分析】

首先需要解決如何對下一頁的網址進行請求的問題。可以點擊下一頁的按鈕,觀察到網站的變化分別如下所示:

https://www.netbian.com/s/wangzherongyao/index_2.htm

https://www.netbian.com/s/wangzherongyao/index_3.htm

https://www.netbian.com/s/wangzherongyao/index_4.htm

觀察到只有index_()變化,變化的部分用{}代替,再用for循環遍歷這網址,實現多個網址請求。

https://www.netbian.com/s/wangzherongyao/index_{}.htm

【五、項目實施】

1、我們定義一個class類繼承object,然後定義init方法繼承self,再定義一個主函數main繼承self。準備url地址和請求頭headers。

import requests

from lxml import etree

import time

class ImageSpider(object):

def __init__(self):

self.firsr_url = "https://www.netbian.com/s/wangzherongyao/index.htm"

self.url = "https://www.netbian.com/s/wangzherongyao/index_{}.htm"

self.headers = {

"User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36"

}

def main(self):

pass

if __name__ == '__main__':

spider= ImageSpider()

spider.main()

'''發送請求 獲取響應'''

def get_page(self, url):

res = requests.get(url=url, headers=self.headers)

html = res.content.decode("gbk") #網絡編碼

return html #返回值

'''解析數據'''

def parse_page(self, html):

parse_html = etree.HTML(html)

image_src_list = parse_html.xpath('//div[@class="list"]/ul/li/a//@href')

for image_src in image_src_list:

fa = "https://www.netbian.com" + image_src

# print(fa)

4、在谷歌瀏覽器上,右鍵選擇開發者工具或者按F12。

5、右鍵檢查,找到圖片二級的頁面的鏈接,如下圖所示。

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
6、對二級頁面發生請求,for遍歷得到的網址。

bimg_url = parse_html1.xpath('//div[@class="pic-down"]/a/@href')

for i in bimg_url:

diet = "https://www.netbian.com" + i

# print(diet)

html2 = self.get_page(diet)

parse_html2 = etree.HTML(html2)

# print(parse_html2)

url2 = parse_html2.xpath('//table[@id="endimg"]//tr//td//a/img/@src')

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
7、將獲取的圖片寫入文檔,獲取圖片的title值作為圖片的命名。

filename = parse_html2.xpath('//table[@id="endimg"]//tr//td//a/@title')

for e in filename:

# print(e)

dirname = "./王者榮耀/" + e + '.jpg'

html2 = requests.get(url=r, headers=self.headers).content

# print(html2)

print(dirname)

with open(dirname, 'wb') as f:

f.write(html2)

print("%s下載成功" % filename)

8、在main方法調用,如下所示。因為第一頁的網址是沒有規律的,所以這裏先判斷一下是不是第一頁。

startPage = int(input("起始頁:"))

endPage = int(input("終止頁:"))

for page in range(startPage, endPage + 1):

if page == 1:

url = self.firsr_url

else:

url = self.url.format(page)

# print(url)

html = self.get_page(url)

print("第%s頁爬取成功!!!!" % page)

# print(html)

self.parse_page(html)

【六、效果展示】

1、運行程序,在控制枱輸入你要爬取的頁數,如下圖所示。

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
2、將下載成功的圖片信息顯示在控制枱,如下圖所示。

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
3、在本地可以看到效果圖,如下圖所示。

一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片
【七、總結】

1、不建議抓取太多數據,容易對服務器造成負載,淺嘗輒止即可。

2、希望通過這個項目,能夠幫助大家下載高清的圖片。

3、本文基於Python網絡爬蟲,利用爬蟲庫,實現王者榮耀圖片的抓取。實現的時候,總會有各種各樣的問題,切勿眼高手低,勤動手,才可以理解的更加深刻。

4、英雄有很多,大家自行選擇你喜歡的英雄做為你的桌面的壁紙吧。

5、需要本文源碼的小夥伴,後台回覆“王者榮耀”四個字,即可獲取。

看完本文有收穫?請轉發分享給更多的人

IT共享之家

入羣請在微信後台回覆【入羣】

責任編輯:

版權聲明:本文源自 網絡, 於,由 楠木軒 整理發佈,共 2732 字。

轉載請註明: 一篇文章教會你利用Python網絡爬蟲抓取王者榮耀圖片 - 楠木軒