1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        4K美女壁紙爬取

        共 3376字,需瀏覽 7分鐘

         ·

        2022-06-13 20:12

        4K美女壁紙爬取

        一、前言

        拍了zhenguo的課程,今天繼續(xù)學(xué)習(xí)課程同時,嘗試使用BeautifulSoup4這個網(wǎng)頁解析的方法爬取圖片,看完后心血來潮,想自己也試一下。

        爬完后并總結(jié)這篇投稿給zhenguo,獎勵我50元稿費,很開心。

        最先想到的是彼岸圖網(wǎng),這個網(wǎng)站上有很多4k壁紙,打開網(wǎng)頁后,我選擇了4k美女壁紙作為本次爬蟲的目標(biāo),爬取到的圖片截圖如下:


        二、過程

        1.首先,我們拿到前三頁的網(wǎng)頁地址。

        2.通過分析可以看出,當(dāng)頁面變化時,index后面會發(fā)生改變,但在第一頁時并沒有數(shù)字顯示,所以做出以下操作,通過input獲取我們想要爬取的頁數(shù),使用if語句對index進(jìn)行賦值,再傳入要爬取的網(wǎng)址中。

        3.接下來就是獲取網(wǎng)頁源代碼了,使用requests.get拿到網(wǎng)頁源代碼,在打印時發(fā)現(xiàn)出現(xiàn)了亂碼,根據(jù)網(wǎng)頁源代碼里的提示,規(guī)定格式為'gbk',再獲取bs對象main_page,指定解析器為'lxml'。

        4.在網(wǎng)頁源代碼中分析得知,需要的內(nèi)容在標(biāo)簽div class='slist'的標(biāo)簽中,每一個li標(biāo)簽下的a標(biāo)簽包含了要爬取的每張圖片的所有信息,所以使用find('div',class_='slist')先定位主標(biāo)簽,再使用find_all('a')定位每一個子標(biāo)簽。接著使用for循環(huán),遍歷每一個a標(biāo)簽下的內(nèi)容,使用get('href')拿到該圖片的url,再使用切片的方法,提出圖片的數(shù)字編號,傳入下載地址,就得到了每一個圖片的下載地址。注意:這里的下載地址是通過抓包獲取,在子頁面的網(wǎng)頁源代碼中是找不到的。

        5.有了下載地址,使用requests模塊獲取響應(yīng)。這里要注意,該網(wǎng)站要登錄后才能進(jìn)行下載,所以我們要在請求頭里傳入cookie參數(shù)。獲取響應(yīng)后我們就要寫入文件保存起來。

        三、完整源碼

        import requests
        from bs4 import BeautifulSoup
        import time
        '''
        第一頁 https://pic.netbian.com/4kmeinv/index.html
        第二頁 https://pic.netbian.com/4kmeinv/index_2.html
        第三頁 https://pic.netbian.com/4kmeinv/index_3.html
        '''

        headers = {
            'cookie''__yjs_duid=1_609256ccf97c86f63356e4e9f3fa5eb21654735480955; Hm_lvt_c59f2e992a863c2744e1ba985abaea6c=1654735481; zkhanecookieclassrecord=%2C65%2C59%2C66%2C54%2C53%2C55%2C; PHPSESSID=25p1pnl1nog1nn56lic0j2fga6; zkhanmlusername=qq803835154342; zkhanmluserid=826128; zkhanmlgroupid=3; zkhanmlrnd=VQOfLNvHK33WGXiln7nY; zkhanmlauth=264643c01db497a277bbf935b54aa3f3; Hm_lpvt_c59f2e992a863c2744e1ba985abaea6c=1654741154'
        }
        page = int(input('請輸入要爬取的頁數(shù):'))
        for i in range(page):
            if i == 0:
                index = 'index'
            else:
                index = f'index_{i+1}'
            theme_url = f'https://pic.netbian.com/4kmeinv/{index}.html' # 要爬取主題的url
            response = requests.get(theme_url)
            response.encoding = 'gbk'
            main_page = BeautifulSoup(response.text,features="lxml")
            li_all_a = main_page.find('div',class_='slist').find_all('a'# li標(biāo)簽下所有的a標(biāo)簽
            for a in li_all_a:
                href = a.get('href')
                picture_num = href[8:13]
                picture_name = a.find('b').string
                down_url = f'https://pic.netbian.com/downpic.php?id={picture_num}&classid=54' # 子頁面中的下載地址
                down_response = requests.get(down_url,headers=headers)
                with open(f'4k美女圖片/'+picture_name+'.jpg',mode='wb'as f:
                    f.write(down_response.content) # 圖片內(nèi)容寫入文件
                print('正在保存',picture_name+'.jpg')
                time.sleep(1)
            response.close()
        print('程序運行完畢')

        四、結(jié)尾

        以上是爬取4k美女壁紙的簡單案例,有興趣的小伙伴可以對比一下其他主題壁紙,參數(shù)稍作修改即可下載其他主題壁紙了。

        瀏覽 276
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产盗摄在线 | 色综合区| 1024久久 | 亚洲综合免费 | 亚洲国产成人精品无码电影 | 成人毛片18女人毛片免费看电影 | 超碰人人操91 | 国产精品无码一区二区三区免费 | 久久99精品国产一区二区三区 | 三级网站看 |