本文的文字及圖片來源于網路,僅供學習、交流使用,不具有任何商業用途,著作權歸原作者所有,如有問題請及時聯系我們以作處理
本文章來著騰訊云 作者:python學習教程

注:某憨批朋友發來的一個網址
其實這個網站的壁紙 還是不錯的嘛,果然是二次元肥宅的最愛~


所以… 爬它
相關python開發工具
- Python 3.6
- Pycharm
- requests
- parsel
相關模塊pip安裝即可
安裝速度慢可以使用鏡像源安裝
以前發過解決pip安裝速度慢的問題
一、獲取詳情頁url地址以及標題
圖片詳情頁是在 ul 標簽里面的 li 標簽下面的
所以只需要請求網址,網站是靜態頁面可以直接獲取網頁資料,但是網頁文字是亂碼,轉碼即可,,
關于動漫類一共是16頁資料
'''
# 第一頁鏈接
http://www.jj20.com/bz/ktmh/list_16_cc_14_1.html
# 第二頁鏈接
http://www.jj20.com/bz/ktmh/list_16_cc_14_2.html
# 第三頁鏈接
http://www.jj20.com/bz/ktmh/list_16_cc_14_2.html
'''
根據頁碼的改變對應的是第幾頁,
一般情況如果想要找到翻頁的效果,是需要從第二頁開始找的,
上述是已經找到答案的情況,但是實際情況你第一頁的url是有所不同的
http://www.jj20.com/bz/ktmh/list_16_cc_14.html
實際上第一頁url是沒有頁面引數的,只有到了第二頁的時候才會有頁碼引數,然后你可以看第三頁的url變化,就可以對比發現規則,然后根據規則拼接第一頁的url地址,看是否也可以訪問,如果可以,那么翻頁規律就找到,如果不可以,那就要根據實際情況再作分析了,
import requests import parsel headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36' } for page in range(1, 17): url = 'http://www.jj20.com/bz/ktmh/list_16_cc_14_{}.html'.format(page) response = requests.get(url=url, headers=headers) selector = parsel.Selector(response.text) lis = selector.css('body > div:nth-child(7) > ul li') for li in lis: page_url = 'http://www.jj20.com/' + li.css('a:nth-child(1)::attr(href)').get() title = li.css('a:nth-child(1) img::attr(alt)').get()
二、獲取壁紙原圖地址

詳情頁中如果想要看下一張圖片地址,則是需要點擊下一張,下面也有其余壁紙的輪播
通過開發者工具可以看到,10張圖片壁紙的地址也都是在 li 標簽里面的,復制鏈接看一下是否是原圖
果然不出意外,真的是縮略圖,
那就點擊下載原圖看一下,原圖地址是什么樣的,
''' # 原圖地址 http://cj.jj20.com/2020/down.html?picurl=/up/allimg/1114/110620113133/201106113133-1.jpg # li標簽里面的地址 http://img.jj20.com/up/allimg/1114/110620113133/201106113133-1-lp.jpg '''
1、拼接url地址就可以了
http://cj.jj20.com/2020/down.html?picurl= +
up/allimg/1114/110620113133/201106113133-1.jpg
2、如果你可以自己試一下把 -lp 一樣可以
http://img.jj20.com/up/allimg/1114/110620113133/201106113133-1.jpg
def get_img(page_url, title): page_url_response = requests.get(url=page_url, headers=headers) page_url_response.encoding = page_url_response.apparent_encoding page_url_selector = parsel.Selector(page_url_response.text) lis_2 = selector.css('#showImg li img::attr(src)').getall() for i in lis_2: # 原圖壁紙地址 # http://pic.jj20.com/up/allimg/1114/110620113133/201106113133-1.jpg # li標簽壁紙地址 # http://img.jj20.com/up/allimg/1114/110620113133/201106113133-1-lp.jpg img_url = i.replace('-lp.jpg', '.jpg') img_title = title + img_url.split('-')[-1]
三、保存壁紙圖片
保存沒什么特別要說的,都是常規操作,固定寫法了,圖片、視頻、音頻都是二進制檔案,用wb的方式寫入就可以了,
def download(img_url, img_title): path = 'img\\' + img_title img_url_response = requests.get(url=img_url, headers=headers) with open(path, mode='wb') as f: f.write(img_url_response.content) print(img_url, img_title)
四、實作效果


沒有爬完所有的,就爬了1000多張,有點占地方,主要是演示一下,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/237443.html
標籤:其他
上一篇:最近最火的《大秦賦》,用Python抓取相關資料,發現了秘密
下一篇:Java之String重點決議
