Python 3爬虫類:seleniumアナログログインcookie抽出データを取得し、データベースMySQLに格納

10475 ワード

seleniumシミュレーションログインクッキー抽出データ取得
  • Python 3爬虫類
  • seleniumアナログログイン取得データ
  • 接続データベースMYSQL
  • 挿入データ
  • タイミング実行
  • アナログログインからクッキーを保存し、データをデータベースに格納し、タイミングを設定して実行すれば自動化してデータをキャプチャすることができる.
  • 微信公衆番号
  • Python 3爬虫類
    仕事にはseleniumがデータを取得する必要があるので、自分の流れ全体と過程で踏んだ穴を書いて、みんなに助けてほしいです!
    seleniumアナログログイン取得データ
    ウィンドウのポップアップを自動化したくない場合は、optionを追加すれば実現できます.私はタイミングを設定して実行しているので、ポップアップのたびに不便です.
    ここで出会った最初のピットは、elementがアカウントのパスワード入力ボックスを位置決めするときにずっとエラーが発生して、後でiframeフレームワークの中で、直接位置決めが成功していないことを発見して、フレームワークの対応する名前を変換して明記する必要があります.
    seleniumのgetでcookiesはcookieを得てjson形式に変換して保存し、forループでheadersのcookieのような形式の文字列に変換することで、直接参照することができます.私が捕まえたサイトはjson形式なので、getリクエスト後は直接jsonに変換して辞書のルールに従って抽出すればいいです.データを保存するにはいろいろな形式があります.私は一般的にデータベースに保存して、保存とクエリーを便利にします.
    次はソースコードです.注釈しました.
    from selenium import webdriver
    import time
    import json
    import datetime
    import requests
    
    option=webdriver.ChromeOptions()
    option.add_argument('headless') #      
    browser = webdriver.Chrome(options=option)
    browser.get('    ')
    time.sleep(5)#    ,        
    browser.switch_to.default_content()#   iframe           ,               
    browser.switch_to.frame('alibaba-login-box')#  iframe       
    browser.find_element_by_id('fm-login-id').send_keys('user')#  element      
    browser.find_element_by_id('fm-login-password').send_keys('password')#    
    browser.find_element_by_class_name('fm-btn').click()#    
    cookie = browser.get_cookies()#  cookie
    jsonCookies = json.dumps(cookie)
    #      cookie
    with open('storeCookie.json','w') as f:
        f.write(jsonCookies)
    with open('storeCookie.json','r',encoding='utf-8') as f:
        listCookies=json.loads(f.read())
    cookie = [item["name"] + "=" + item["value"] for item in listCookies]
    cookiestr = '; '.join(item for item in cookie)#   headers cookie     
    print(cookiestr)
    browser.close()
    url='       '
    headers={
    'cookie':cookiestr,
    'user-agent': '  headers     '
    }
    res = requests.get(url,headers=headers)
    datas = res.json()
    

    接続データベースMYSQL
    import pymysql
    db = pymysql.connect(
            user="  ",
            password="  ",
            host="localhost",
            database="     ",
            port=3306,
            charset="utf8")
        #     
    cursor = db.cursor()
    

    データの挿入
    sql = "insert into table(Column1,Column2,Column3,Column4,Column5) VALUE('%s','%s','%s','%s','%s')"%(Column1,Column2,Column3,Column4,Column5)#            
    db.ping(reconnect=True)
    cursor.execute(sql)
    db.commit()
    db.close()
    

    タイミング実行
    スクリプトのタイミング実行が必要な場合は、threadingパッケージをインポートし、時間を調整すればいいです.
    アナログログインからクッキーを保存し、データをデータベースに格納し、タイミングを設定して実行すれば自動化してデータをキャプチャすることができます.
    微信公衆番号