亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python爬蟲中怎么利用分布式獲取數據

發布時間:2020-11-27 14:35:46 來源:億速云 閱讀:174 作者:Leah 欄目:開發技術

今天就跟大家聊聊有關python爬蟲中怎么利用分布式獲取數據,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

假設我有三臺爬蟲服務器A、B和C。我想讓我所有的賬號登錄任務分散到三臺服務器、讓用戶抓取在A和B上執行,讓粉絲和關注抓取在C上執行,那么啟動A、B、C三個服務器的celery worker的命令就分別是

celery -A tasks.workers -Q login_queue,user_crawler worker -l info -c 1 # A服務器和B服務器啟動worker的命令,它們只會執行登錄和用戶信息抓取任務。

celery -A tasks.workers -Q login_queue,fans_followers worker -l info -c 1 # C服務器啟動worker的命令,它只會執行登錄、粉絲和關注抓取任務。

然后我們通過命令行或者代碼(如下)就能發送所有任務給各個節點執行了

# coding:utf-8
from tasks.workers import app
from page_get import user as user_get
from db.seed_ids import get_seed_ids, get_seed_by_id, insert_seeds, set_seed_other_crawled
@app.task(ignore_result=True)
def crawl_follower_fans(uid):
  seed = get_seed_by_id(uid)
  if seed.other_crawled == 0:
    rs = user_get.get_fans_or_followers_ids(uid, 1

    rs.extend(user_get.get_fans_or_followers_ids(uid, 2))
    datas = set(rs)
    # 重復數據跳過插入
    if datas:
      insert_seeds(datas)
    set_seed_other_crawled(uid)
@app.task(ignore_result=True)
def crawl_person_infos(uid):
  ""
  根據用戶i來爬取用戶相關資料和用戶的關注數和粉絲數(由于微博服務端限制,默認爬取前五頁,企業號的關注和粉絲也不能查看)
  :param uid: 用戶id
  :return:
  """
  if not uid:
    return
  # 由于與別的任務共享數據表,所以需要先判斷數據庫是否有該用戶信息,再進行抓取
  user = user_get.get_profile(uid)
  # 不抓取企業號
  if user.verify_type == 2:
    set_seed_other_crawled(uid)
    return
  app.send_task('tasks.user.crawl_follower_fans', args=(uid,), queue='fans_followers',
         routing_key='for_fans_followers')
@app.task(ignore_result=True)
def excute_user_task():
  seeds = get_seed_ids()
  if seeds:
    for seed in seeds:
      # 在send_task的時候指定任務隊列
      app.send_task('tasks.user.crawl_person_infos', args=(seed.uid,), queue='user_crawler',
             routing_key='for_user_info')

分布式爬蟲架構圖

python爬蟲中怎么利用分布式獲取數據

看完上述內容,你們對python爬蟲中怎么利用分布式獲取數據有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

新河县| 罗田县| 鄂伦春自治旗| 布拖县| 永和县| 新竹县| 大邑县| 资兴市| 云林县| 济南市| 红河县| 阿巴嘎旗| 罗甸县| 隆德县| 宝清县| 西林县| 丹凤县| 深水埗区| 响水县| 东台市| 尤溪县| 隆安县| 清远市| 巫山县| 连平县| 钟祥市| 福州市| 平泉县| 贺兰县| 澄江县| 汝南县| 昔阳县| 阿坝县| 顺平县| 田阳县| 河曲县| 长宁县| 应用必备| 龙山县| 康乐县| 二连浩特市|