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に変換して辞書のルールに従って抽出すればいいです.データを保存するにはいろいろな形式があります.私は一般的にデータベースに保存して、保存とクエリーを便利にします.
次はソースコードです.注釈しました.
接続データベースMYSQL
データの挿入
タイミング実行
スクリプトのタイミング実行が必要な場合は、threadingパッケージをインポートし、時間を調整すればいいです.
アナログログインからクッキーを保存し、データをデータベースに格納し、タイミングを設定して実行すれば自動化してデータをキャプチャすることができます.
微信公衆番号
仕事には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パッケージをインポートし、時間を調整すればいいです.
アナログログインからクッキーを保存し、データをデータベースに格納し、タイミングを設定して実行すれば自動化してデータをキャプチャすることができます.
微信公衆番号