python爬蟲120源碼DIY--001--抓取桌面壁紙

python爬蟲120源碼DIY--001--抓取桌面壁紙


    本次抓取所用目標網(wǎng)址:http://www.netbian.com/fengjing/,內含N多高清壁紙圖,初始只是預覽圖,真正的高清圖在后面,需要點開兩次鏈接后獲得,所以這里用爬蟲組合出高清圖地址并抓取之.

參考博文:

https://blog.csdn.net/hihell/article/details/117024328?utm_source=app&app_version=4.16.0&code=app_1562916241&uLinkId=usr1mkqgl919blen

原文用的是正則表達式和re模塊,且下載的只是預覽圖,我在此基礎上重新改寫可獲得高清圖,本文僅供參考,提供一個思路

工具原料:


  • python3

  • requests庫

  • parsel庫

思路解析:


  1. 分析頁面,如圖所示,每個頁面的預覽圖都在list這個列表集合下.每張圖對應一個縮寫的地址:"<a href="/desk/23791.htm...."
    [圖片上傳失敗...(image-dd9751-1633356959952)]

  2. 使用parsel庫解析出最初的地址,其中夾雜了不需要的網(wǎng)址

    url = 'http://www.netbian.com/fengjing/'
    response = requests.get(url)
    sel = parsel.Selector(response.content.decode('gbk'))
    lists = sel.css('.list li a::attr(href)').extract()  # 獲得初始地址
    

    [圖片上傳失敗...(image-7d6ddb-1633356959952)]

  3. 過濾不需要的地址

     查看鏈接獲得高清圖像的地址為:http://www.netbian.com/desk/23791-1920x1080.htm,這里使用startswith()方法挑選出適合的地址并存入新列表,這里直接用一個函數(shù)清洗地址并重新組裝
    
    # 清洗組裝地址
    def clearurl(lists):
        nurls = []
        for i in lists:
            if i.startswith('/desk/'):
                i = wurl + i[:-4] + '-1920x1080.htm'
                nurls.append(i)
        return nurls
    

    最終獲得如下地址列表:
    在這里插入圖片描述
  1. 解析高清圖片所在網(wǎng)頁,獲得最終圖片地址并下載

     從網(wǎng)頁源碼中獲得圖片地址,如下圖:
    

[圖片上傳失敗...(image-b007a1-1633356959952)]

gqurls = clearurl(lists)

response = requests.get(gqurls[0]) #此處僅作測試,抽取第一個地址
sel = parsel.Selector(response.content.decode('gbk'))
gpic = sel.css('td a::attr(href)').extract_first()

image = requests.get(gpic).content
with open('../eg001/'+'1.jpg', 'wb') as f:
    f.write(image)

至此,第一個圖片從解析到下載基本完成.

  1. 解析分頁,獲取更多圖片下載地址

     分析網(wǎng)頁地址變化規(guī)律得出地址為:
    

    http://www.netbian.com/fengjing/index.htm

    http://www.netbian.com/fengjing/index_2.htm

    http://www.netbian.com/fengjing/index_3.htm

    .....

    http://www.netbian.com/fengjing/index_205.htm

    除了第一頁地址不帶序號,之后都是有規(guī)律的地址,將url地址重整為list形式

    def urls():
        url_list = ['http://www.netbian.com/fengjing/index_{}.htm'.format(i) for i in range(2, 206)]
        url_list.insert(0, 'http://www.netbian.com/fengjing/')
        return url_list
    
  2. 封裝一下sel對象

     因為要重復調用sel對象解析網(wǎng)頁,所以將sel做出函數(shù)形式
    
    # 獲得sel對象
    def t_sel(url):
        response = requests.get(url)
        sel = parsel.Selector(response.content.decode('gbk'))
        return sel
    

完整源碼:

#!/usr/bin/env python
# coding=utf-8

'''
001號
壁紙爬取
http://www.netbian.com/fengjing/
'''

import requests
import parsel

url = 'http://www.netbian.com/fengjing/'
wurl = 'http://www.netbian.com'


# 獲得分頁url地址列表
def urls():
    url_list = ['http://www.netbian.com/fengjing/index_{}.htm'.format(i) for i in range(2, 3)]
    url_list.insert(0, url)
    return url_list


# 組裝sel對象
def t_sel(url):
    response = requests.get(url)
    sel = parsel.Selector(response.content.decode('gbk'))
    return sel


# 清洗組裝獲得高清地址
def clearurl(lists):
    nurls = []
    for i in lists:
        # print(i)
        if i.startswith('/desk/'):
            i = wurl + i[:-4] + '-1920x1080.htm'
            nurls.append(i)
    return nurls


def savepic(gqurls):
    for g_url in gqurls:
        sel = t_sel(g_url)
        gpic = sel.css('td a::attr(href)').extract_first()
        image = requests.get(gpic).content
        with open('../eg001/' + str(g_url[28:-4]) + '.jpg', 'wb') as f:
            f.write(image)


if __name__ == '__main__':
    ulist = urls()
    for url in ulist:
        sel = t_sel(url)
        lists = sel.css('.list li a::attr(href)').extract()  # 獲得初始地址
        gqurls = clearurl(lists)
        savepic(gqurls)

源碼已上傳存檔

碼云存檔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市嘲恍,隨后出現(xiàn)的幾起案子跟束,更是在濱河造成了極大的恐慌,老刑警劉巖采呐,帶你破解...
    沈念sama閱讀 210,914評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡氮凝,警方通過查閱死者的電腦和手機谜洽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,935評論 2 383
  • 文/潘曉璐 我一進店門萝映,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阐虚,你說我怎么就攤上這事序臂。” “怎么了实束?”我有些...
    開封第一講書人閱讀 156,531評論 0 345
  • 文/不壞的土叔 我叫張陵奥秆,是天一觀的道長。 經(jīng)常有香客問我咸灿,道長构订,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,309評論 1 282
  • 正文 為了忘掉前任避矢,我火速辦了婚禮悼瘾,結果婚禮上囊榜,老公的妹妹穿的比我還像新娘。我一直安慰自己亥宿,他們只是感情好卸勺,可當我...
    茶點故事閱讀 65,381評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著箩绍,像睡著了一般孔庭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上材蛛,一...
    開封第一講書人閱讀 49,730評論 1 289
  • 那天圆到,我揣著相機與錄音,去河邊找鬼卑吭。 笑死芽淡,一個胖子當著我的面吹牛,可吹牛的內容都是我干的豆赏。 我是一名探鬼主播挣菲,決...
    沈念sama閱讀 38,882評論 3 404
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掷邦!你這毒婦竟也來了白胀?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,643評論 0 266
  • 序言:老撾萬榮一對情侶失蹤抚岗,失蹤者是張志新(化名)和其女友劉穎或杠,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體宣蔚,經(jīng)...
    沈念sama閱讀 44,095評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡向抢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,448評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了胚委。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挟鸠。...
    茶點故事閱讀 38,566評論 1 339
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖亩冬,靈堂內的尸體忽然破棺而出艘希,到底是詐尸還是另有隱情,我是刑警寧澤硅急,帶...
    沈念sama閱讀 34,253評論 4 328
  • 正文 年R本政府宣布枢冤,位于F島的核電站,受9級特大地震影響铜秆,放射性物質發(fā)生泄漏。R本人自食惡果不足惜讶迁,卻給世界環(huán)境...
    茶點故事閱讀 39,829評論 3 312
  • 文/蒙蒙 一连茧、第九天 我趴在偏房一處隱蔽的房頂上張望核蘸。 院中可真熱鬧,春花似錦啸驯、人聲如沸客扎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,715評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徙鱼。三九已至,卻和暖如春针姿,著一層夾襖步出監(jiān)牢的瞬間袱吆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,945評論 1 264
  • 我被黑心中介騙來泰國打工距淫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留绞绒,地道東北人。 一個月前我還...
    沈念sama閱讀 46,248評論 2 360
  • 正文 我出身青樓榕暇,卻偏偏與公主長得像蓬衡,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子彤枢,可洞房花燭夜當晚...
    茶點故事閱讀 43,440評論 2 348

推薦閱讀更多精彩內容