ビブラートをクロールappium

1.MongoDB.py

輸入pymongo 
pymongo.collectionインポートコレクションから


クライアント= pymongo.MongoClient(ホスト= '192.168.54.41'、ポート= 27017)
デシベル=クライアント[ 'douyin'] 

DEF send_task():
    '、 'douyin_hot_id.txt'(オープンrの')Fとして:
        f_read = f.readlines()
        iについてf_readで:
            task_info = {} 
            task_info [' share_id '] = i.replace(' \ n」を、 '')
            [ 'task_type'] = 'share_id' task_info 
            印刷( '当前保存的タスク为%S:' %のtask_info)
            save_task(task_info)

DEF save_task(タスク):#保存数据到MongoDBの中
    task_collections =コレクション(DB、 'douyin_task')
    task_collections.update({[share_id ':タスク[' share_id ']}、タスク、真)

:DEF(task_type)get_task 
    task_collections =コレクション(DB、 'douyin_task')
    タスク= task_collections.find_one_and_delete({ 'task_type':task_type})
    戻りタスク

デフDELETE_TASK(タスク):
    合格

:DEF save_data(アイテム)
    data_collections =コレクション(DBを、 'douyin_data')
    data_collections.insert(アイテム)

2.decode.py

輸入JSONの
試み:
    douyin.handle_mongo輸入save_taskから
除く:
    handle_mongo輸入save_taskのから

デフ応答(フロー):
    flow.request.urlの'aweme / V1 /ユーザー/フォロワー/リスト/'の場合:
        json.loadsでのユーザーのために(流れ.response.text)[ 'フォロワー']:
            douyin_info = {} 
            douyin_info [ 'share_id'] =ユーザ[ 'UID'] 
            [ 'douyin_id'] douyin_info =ユーザ[ 'short_id'] 
            save_task(douyin_info)

3.douyin.py

インポート時間
selenium.webdriver.support.uiインポートWebDriverWaitから
appiumインポートからwebdriverを

desired_caps = {}は
[ 'platformName'] desired_caps = 'アンドロイド' 
desired_caps [ 'DEVICENAME'] = 'TGIRPJOBFUZ9IJSW' 
desired_caps [ 'platformVersion'] = '6.0' 
desired_caps [ 'appPackage'] = 'com.ss.android.ugc.aweme' 
desired_caps [ 'appActivity'] = 'com.ss.android.ugc.aweme.splash.SplashActivity' 
desired_caps [ 'NORESETは'] = TRUE 
[desired_capsを'unicodeKeyboardは'] = TRUE 
[ 'resetKeyboardが'] = TRUE desired_capsを

( 'http://192.168.54.56:4723/wd/hub' desired_caps)ドライバ= webdriver.Remoteを


DEF(ドライバ)get_size。 
    リターン(x、y)は
    X = driver.get_window_size() '幅']
    Y = driver.get_window_size() '高'] 
        WebDriverWait(ドライバ、3).until(ラムダXの場合:x.find_element_by_xpath(


デフhandle_douyin(ドライバ):
    #1处理权限
    してみてください:
        WebDriverWaitしばらく(ドライバ、5).until(ラムダX:x.find_element_by_xpath(
                「//android.widget.TextView[@resource-id='android:id/le_bottomsheet_default_title '] 「)):
            driver.find_element_by_xpath(
                "//android.widget.Button[@resource-id='com.android.packageinstaller:id/permission_allow_button ']")(クリックしてください)。
    除い:
        パス

    試み:
        #点击搜索
        プリント( '点击搜索')
                "//android.widget.ImageView[@resource-id='com.ss.android.ugc.aweme:id/ab_ ']")):
            driver.find_element_by_xpath( 
                "//android.widget.ImageView[@resource- = ID 'com.ss.android.ugc.aweme:ID / AB&_']「)をクリック()。
    除く:
        #[26,76] [115165] 
        driver.tap([(26、76である)、(115、165 )]、500)NA#のXPathの位置を制御
    #ロケーション検索ボックスを
    WebDriverWait(ドライバ、3).until(ラムダX- IF:x.find_element_by_xpath(
            「//android.widget.EditText[@resource-id='com .ss.android.ugc.aweme:上記のID / A4P「] ")): はdouyin_id検索取得
        driver.find_element_by_xpath(
            " //android.widget.EditText[@resource-id='com.ss.android.ugcを。 aweme:ID / A4P '] ")。send_keys( 'lwnx1208')
        一方driver.find_element_by_xpath( 
                " //android.widget .EditText [@リソース-ID = 'com.ss.android.ugc.aweme:ID / A4P']「)テキスト= 'lwnx1208':。!
            driver.find_element_by_xpath(
                「//android.widget.EditText[@resource-id='com.ss.android.ugc.aweme:id/a4p']").send_keys('lwnx1208' )
            time.sleep(0.1)
    #点击搜索
    driver.find_element_by_xpath( "// android.widget.TextView [リソース-ID = 'com.ss.android.ugc.aweme:ID / A4R' @]")。クリックしてください() 点击用户标签
    WebDriverWait場合(ドライバ、3).until(ラムダX:x.find_element_by_xpath( "// android.widget.TextView [テキスト@ = '用户']")):
        driver.find_element_by_xpathテキスト@( "// android.widget.TextView [= '用户'] ")をクリックします()。 点击头像
    WebDriverWait(ドライバ、3の場合)(ラムダX .until:x.find_element_by_xpath(
            「//android.support.v7.widget.RecyclerView[@resource-id='com.ss.android.ugc.aweme:id/kh '] / android.widget.RelativeLayout [1] /android.widget.RelativeLayout [ 1] /android.widget.ImageView [1] ")):
        driver.find_element_by_xpath(
            " //android.support.v7.widget.RecyclerView[@resource-id='com.ss.android.ugc.aweme:id/ KH '] / android.widget.RelativeLayout [1] /android.widget.RelativeLayout [1] /android.widget.ImageView [1]」)。(クリック)
    #点击粉丝按钮
    WebDriverWait(ドライバ、3)(.until場合ラムダX:x.find_element_by_xpath(
            "//android.widget.TextView[@resource-id='com.ss.android.ugc.aweme:id/a6a ']")):
        driver.find_element_by_xpath(
            "//アンドロイド。 widget.TextView [リソース-ID @ =」com.ss.android.ugc.aweme:ID / A6A '] ")をクリックします()。

    L = get_size(ドライバ)
    X1 = INT(L [0] * 0.5)
    Y1 = INT(L [1] * 0.75)
    Y2 = INT(L [1] * 0.25)
    真中:
        もし'没有更多了'でdriver.page_source:
            ブレーク
        driver.swipe(X1、Y1、X1、Y2)
        time.sleep(0.5)


の場合__name__ == '__main__':
    handle_douyin(ドライバ)

  

  

おすすめ

転載: www.cnblogs.com/yoyo1216/p/11114031.html