国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

python中協(xié)程gevent的示例分析

發(fā)布時(shí)間:2021-09-04 11:55 來(lái)源:億速云 閱讀:0 作者:小新 欄目: 開(kāi)發(fā)技術(shù)

這篇文章主要介紹了python中協(xié)程gevent的示例分析,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著(zhù)大家一起了解一下。

分析

分析網(wǎng)站尋找需要的網(wǎng)址

用谷歌瀏覽器摁F12打開(kāi)開(kāi)發(fā)者工具,然后打開(kāi)斗魚(yú)顏值分類(lèi)的頁(yè)面,如圖:

在里面的請求中,最后發(fā)現它是以ajax加載的數據,數據格式為json,如圖:

圈住的部分是我們需要的數據,然后復制它的網(wǎng)址為https://www.douyu.com/gapi/rknc/directory/yzRec/1,出于學(xué)習目的只爬取第一頁(yè)(減少壓力)。然后把網(wǎng)址放到瀏覽器中測試是否可以訪(fǎng)問(wèn)。如圖:

結果正常。

分析json數據,提取圖片鏈接

最后分析發(fā)現json中的data里面的rl是每個(gè)房間的信息,大概有200條左右,拿出其中的一條查詢(xún)里面的圖片鏈接。

{
        "rid": 1282190,
        "rn": "大家要開(kāi)心啊~",
        "uid": 77538371,
        "nn": "鯨魚(yú)歐尼",
        "cid1": 8,
        "cid2": 201,
        "cid3": 581,
        "iv": 1,
        "av": "avatar_v3/201908/d62c503c603945098f2c22d0d95c3b2e",
        "ol": 610574,
        "url": "/1282190",
        "c2url": "/directory/game/yz",
        "c2name": "顏值",
        "icdata": {
          "217": {
            "url": "https://sta-op.douyu.cn/dy-listicon/king-web.png-v3.png",
            "w": 0,
            "h": 0
          }
        },
        "dot": 2103,
        "subrt": 0,
        "topid": 0,
        "bid": 0,
        "gldid": 0,
        "rs1": "https://rpic.douyucdn.cn/live-cover/appCovers/2019/08/01/1282190_20190801002745_big.jpg/dy1",
        "rs16": "https://rpic.douyucdn.cn/live-cover/appCovers/2019/08/01/1282190_20190801002745_small.jpg/dy1",
        "utag": [
          {
            "name": "呆萌鯨魚(yú)",
            "id": 111405
          },
          {
            "name": "美美美",
            "id": 41
          },
          {
            "name": "萌萌噠",
            "id": 520
          },
          {
            "name": "刀神老婆",
            "id": 132367
          }
        ],
        "rpos": 0,
        "rgrpt": 1,
        "rkic": "",
        "rt": 2103,
        "ot": 0,
        "clis": 1,
        "chanid": 0,
        "icv1": [
          [
            {
              "id": 217,
              "url": "https://sta-op.douyucdn.cn/dy-listicon/web-king-1-10-v3.png",
              "score": 994,
              "w": 0,
              "h": 0
            }
          ],
          [
            
          ],
          [
            
          ],
          [
            
          ]
        ],
        "ioa": 0,
        "od": ""
      }

測試發(fā)現rs16是房間的圖片,如果把鏈接最后的/dy1去掉的話(huà),圖片就成大圖了,心里美滋滋。

代碼實(shí)現

import gevent
import json
from urllib import request
from gevent import monkey
# 使用gevent打補丁,耗時(shí)操作自動(dòng)替換成gevent提供的模塊
monkey.patch_all()
# 圖片存放的目錄
ROOT = "./images/"
# 設置請求頭,防止被反爬蟲(chóng)的第一步
header = {
  "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36 "
}


def download(img_src):
  # 把每個(gè)鏈接最后的/dy1去掉
  img_src: str = img_src.replace("/dy1", "")
  # 提取圖片名
  file_name: str = img_src.split("/")[-1]
  response = request.urlopen(request.Request(img_src, headers=header))
  # 保存到本地
  with open(ROOT + file_name, "wb") as f:
    f.write(response.read())
  print(file_name, "下載完成!")
if __name__ == '__main__':

  req = request.Request("https://www.douyu.com/gapi/rknc/directory/yzRec/1", headers=header)
  # 把json數據轉換成python中的字典
  json_obj = json.loads(request.urlopen(req).read().decode("utf-8"))
  tasks = []
  for src in json_obj["data"]["rl"]:
    tasks.append(gevent.spawn(download, src["rs16"]))
  # 開(kāi)始下載圖片
  gevent.joinall(tasks)

結果

由于使用的是協(xié)程,比線(xiàn)程效率更高,不到1秒就把第一頁(yè)的圖片全部爬取下來(lái)了。效果如圖:

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自互聯(lián)網(wǎng)轉載和分享為主,文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權請聯(lián)系QQ:712375056 進(jìn)行舉報,并提供相關(guān)證據,一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容。

久久久噜噜噜久久中文福利| AV无码久久久精品免费| 性一交一乱一伦一色一情孩交| 在线观看免费AV无码不卡| 国产精品99精品无码视亚| 无区码一码二码三码|