Python爬蟲實戰,requests模塊,Python抓取虎牙直播美女封面圖片

前言

今天給大家的介紹Python爬取海量美女圖片並保存本地。

開發工具

Python版本: 3.8

相關模塊:

requests模塊

multiprocessing模塊

urllib模塊

json模塊

環境搭建

安裝Python並添加到環境變量,pip安裝需要的相關模塊即可。

頁面獲取

這裏我們以虎牙爲例,進入首頁

選擇更多,但是如果你需要的在上面可以直接選擇也可以,比如王者榮耀、英雄聯盟等,我們選擇【顏值】,進入顏值頁面

來到顏值頁面後,我們F12打開開發者工具或者鼠標右擊選擇檢查,選擇Network進行網絡請求和響應的查看。我們的目的是獲取海量的美女圖片(建議谷歌瀏覽器)

將頁面拉到底部,進行翻頁。發現地址欄沒有變化還仍然是:

huya.com/g/2168

如果大家遇到這種情況,就要考慮是不是使用ajax進行異步請求了。在Network中選擇XHR,進行異步請求的篩選。

點開上圖中圈起來的鏈接,發現在response處是一個json返回結果

接着就把此鏈接拷貝出來,進行分析:

1.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=1

2.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=2

3.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=3

4.https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page=4

找到了規律,頁碼數對應上了下面我們進行代碼實現

代碼實現

# 要爬取的網址
    # page: 頁碼
    url = f'https://www.huya.com/cache.php?m=LiveList&do=getLiveListByPage&gameId=2168&tagAll=0&callback=getLiveListJsonpCallback&page={page}'

    # 開始爬取虎牙的妹子
    response = requests.get(url, headers=headers)
    content = response.text
    result = content[len('getLiveListJsonpCallback('): -1]

    # json解析: json字符串 => python字典
    result2 = json.loads(result)
    # print(result2)

    # 當前頁的所有妹子
    meizi_list = result2['data']['datas']
    for meizi in meizi_list:
        nick = meizi['nick']  # 暱稱
        img = meizi['screenshot']  # 圖片url

        # print(nick, img)
        # 下載圖片,並以暱稱作爲圖片名
        try:
            request.urlretrieve(img, f'huya/{page}-{nick}.png')
            request.urlcleanup()  # 清空緩存
            print(f'{page}-{nick}.png 下載完成!')
        except:
            print('error:', nick)

結果展示

最後

今天的分享到這裏就結束了 ,感興趣的朋友也可以去試試哈

對文章有問題的,或者有其他關於python的問題,可以在評論區留言或者私信我哦

覺得我分享的文章不錯的話,可以關注一下我,或者給文章點贊(/≧▽≦)/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章