中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

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

铜川市| 常山县| 乌鲁木齐县| 陆川县| 阳朔县| 新乡县| 南开区| 乌恰县| 炉霍县| 黄浦区| 阜宁县| 朔州市| 菏泽市| 定边县| 乌拉特前旗| 台江县| 潞城市| 新昌县| 平远县| 湾仔区| 德保县| 平谷区| 唐山市| 忻州市| 扎兰屯市| 商都县| 西乌珠穆沁旗| 疏附县| 丹巴县| 安溪县| 灯塔市| 永修县| 墨玉县| 会同县| 微博| 马公市| 玉林市| 逊克县| 广南县| 黄石市| 云南省|