<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          手把手教你使用Python網(wǎng)絡(luò)爬蟲獲取搜狗壁紙

          共 3211字,需瀏覽 7分鐘

           ·

          2020-09-23 21:09

          點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

          回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

          千淘萬漉雖辛苦,吹盡狂沙始到金。

          /1 前言/

          ????搜狗壁紙是一款高清電腦壁紙下載,集成萬款美女、寵物、風(fēng)景、電影、節(jié)日、日歷、簡(jiǎn)約壁紙,一鍵更換壁紙,多分辨率自適應(yīng),支持分組播放。

          ????搜狗壁紙,素材豐富,種類齊全,集美女、風(fēng)景、萌寵等13個(gè)分類。讓你的桌面充滿愛。



          /2 項(xiàng)目目標(biāo)/

          ??? 教會(huì)大家如何去獲取搜狗壁紙,下載你喜歡的分類。


          /3?項(xiàng)目準(zhǔn)備/

          軟件:PyCharm

          需要的庫(kù):requests、fake_useragent、json

          網(wǎng)站如下:

          https://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15


          /4 項(xiàng)目分析/

          一、如何找到 json真正訪問地址?

          1、以壁紙這個(gè)分類來看,雙擊打開網(wǎng)站,右鍵F12>>找到下面的Network>>XHR>>(點(diǎn)擊XHR下的文件)。刷新頁(yè)面。找到Headers,里面的Request URL。

          Request URL如下:

          http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15&width=1536&height=864

          2、試著去掉一些不必要的部分,技巧就是,刪掉可能的部分之后,訪問不受影響。經(jīng)篩選。最后得到的url如下:

          http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=%E5%A3%81%E7%BA%B8&tag=%E5%85%A8%E9%83%A8&start=0&len=15  

          字面意思,知道category后面可能為分類。start為開始下標(biāo),len為長(zhǎng)度,也即圖片的數(shù)量。


          二、如何獲取里面的圖片的地址?

          1、點(diǎn)擊其中一個(gè)文件打開Preview,點(diǎn)開all_items 發(fā)現(xiàn)下面是0 1 2 3...一個(gè)一個(gè)的貌似是圖片元素。試著打開一個(gè)url。pic_url就是圖片的地址。如圖:


          /5 反爬措施/

          1、獲取正常的http請(qǐng)求頭,并在requests請(qǐng)求時(shí)設(shè)置這些常規(guī)的http請(qǐng)求頭。

          2、使用 fake_useragent ,產(chǎn)生隨機(jī)的UserAgent進(jìn)行訪問。


          /6?項(xiàng)目實(shí)現(xiàn)/

          1、定義一個(gè)class類繼承object,定義init方法繼承self,主函數(shù)main繼承self。導(dǎo)入需要的庫(kù)和網(wǎng)址,代碼如下所示。

          import requests, jsonfrom fake_useragent import UserAgent
          class ShouGO(object): def __init__(self): pass
          def main(self): pass
          if __name__ == '__main__': Siper = ShouGO() Siper.main()


          2、隨機(jī)生成UserAgent,防止反爬。

              ua = UserAgent(verify_ssl=False)    for i in range(1, 50):        self.headers = {            'User-Agent': ua.random,        }


          3、定義Shou方法傳入三個(gè)參數(shù)category, length, path分別對(duì)應(yīng)json地址參數(shù)值。實(shí)例化變量。

           def Shou(self, category, length, path):      n = length      cate = category


          4、json解析。

              imgs = requests.get(        'http://pic.sogou.com/pics/channel/getAllRecomPicByTag.jsp?category=' + cate + '&tag=%E5%85%A8%E9%83%A8&start=0&len=' + str(            n))    jd = json.loads(imgs.text)    jd = jd['all_items']    imgs_url = []


          5、for循環(huán)遍歷數(shù)組找到圖片地址。

             for j in jd:        imgs_url.append(j['pic_url'])


          6、for循環(huán)邊框圖片地址,定義一個(gè)變量m作為圖片名稱,拼接圖片地址。

              m = 0    for img_url in imgs_url:        # print(img_url)        print('***** ' + cate + str(m) + '.jpg *****' + '   Downloading...')


          7、?圖片地址發(fā)生請(qǐng)求,獲取響應(yīng)。

          img = requests.get(url=img_url, headers=self.headers).content


          8、保存圖片

                with open(path + cate + str(m) + '.jpg', 'wb') as f:          f.write(img)      # urllib.request.urlretrieve(img_url, path + str(m) + '.jpg')      m = m + 1  print('Download complete!')


          9、mian里調(diào)用Shou方法傳入?yún)?shù)。實(shí)現(xiàn)功能。

              def main(self):        self.Shou('汽車', 2000, './壁紙2/')


          /7?效果展示/

          1、點(diǎn)擊綠色小三角運(yùn)行。以Shou('汽車', 2000, './壁紙2/'):(“分類”,長(zhǎng)度。"保存的地址")為例。點(diǎn)擊運(yùn)行,結(jié)果顯示在控制臺(tái),如下圖所示。


          2、保存的圖片,如下圖所示。


          /8 小結(jié)/

          1、不建議抓取太多數(shù)據(jù),容易對(duì)服務(wù)器造成負(fù)載,淺嘗輒止即可。
          2、本文章就python爬取搜狗壁紙,以及如何防止反爬,做出了相對(duì)于的解決方案。
          3、介紹了如何去拼接字符串,以及列表如何進(jìn)行類型的轉(zhuǎn)換。
          5、歡迎大家積極嘗試,有時(shí)候看到別人實(shí)現(xiàn)起來很簡(jiǎn)單,但是到自己動(dòng)手實(shí)現(xiàn)的時(shí)候,總會(huì)有各種各樣的問題,切勿眼高手低,勤動(dòng)手,才可以理解的更加深刻。
          6、大家可以自行修改自己想要的分列,爬取自己喜歡的圖片。
          7、如果需要本文源碼的話,請(qǐng)?jiān)诠娞?hào)后臺(tái)回復(fù)“搜狗壁紙”四個(gè)字進(jìn)行獲取,覺得不錯(cuò),記得給個(gè)star噢。

          -------------------?End?-------------------

          往期精彩文章推薦:

          歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

          想加入Python學(xué)習(xí)群請(qǐng)?jiān)诤笈_(tái)回復(fù)【入群

          萬水千山總是情,點(diǎn)個(gè)【在看】行不行

          /今日留言主題/

          隨便說一兩句吧~~

          瀏覽 57
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91视频久久久久久久久久久久 | 亚洲天堂50p | 欧美综合色| 亚洲三级久久 | 九一亚洲|