day02 - セレンライブラリー

昨日レビュー:
まず、爬虫類の基本原則
-爬虫類全体のプロセス
1.送信要求
2は、応答データ受信
3.構文解析をし、貴重なデータを抽出し
、データ保存4.
2を、Resquestsリクエスト・ライブラリは、
-get
URLの
ヘッダー
クッキーが
-post
URLの
ヘッダー
クッキー
データ
第三に、Xiaohuaネットクロール
ページによって解決抽出詳細ページを
ビデオの詳細ページを介して2抽出URL
3はバイナリストリームローカルビデオ書き込まれ得る
4つの自動ログインGitHubの
リクエストヘッダとボディ情報要求の1解析
ユーザ名-
-パスワード
ADDR
-各種
2.token
-ログインページエキスを解析することにより、
3. session_urlリクエスト送信
:-header
のUser-Agent

-cookies:
クッキーログインページ

-data:
フォームデータ
:今日のコンテンツ
、IMDBのデータベース要求情報をクロールリクエスト
リクエストされたURL -
https://movie.douban.comを/ TOP250

-リクエストメソッドの
GET

-リクエストヘッダ
のUser-Agent
クッキー
2、セレン要求ライブラリ
セレンは何1.
最初の自動テストツールでは、いくつかの自己定義された操作を実行するには、ブラウザの駆動原理です。
爬虫類は基本的にアナログブラウザですので、あなたは爬虫類を行うために彼を使用することができます。
2.なぜ、セレンを使用
利点を:
- JSコードが実行される
-複雑な通信プロセスを分析する必要はありません
、ポップを行うプルダウンブラウザおよび他の操作は-
- *****動的データを取得してもよい
- ***クラックが認証ログインでき
欠点;
-低効率
3。インストールと使用
セレン要求ライブラリのインストール1.
PIP3はセレンインストール
2.あなたがブラウザをインストールする必要があります。
グーグルを、Firefoxの
http://npm.taobao.org/mirrors/chromedriver/2.38/
3.ブラウザドライバのインストール
#クロール映画を
「」 ' 
:IMDBのメッセージクロール
映画名、映画のurl
映画監督、映画主演
映画年、ジャンル
映画音楽、映画レビューの
映画の紹介
すべてのホームURLの1.分析
最初のページ:
https://movie.douban.comを?/ top250がスタート= 0&フィルタ =
2ページ目:
https://movie.douban.com/top250?start=25&filter=
'' '
のインポートが要求した
インポートの再
#クローラの三部作の
第1位は、リクエスト送信
デフget_page(URL)を:
=(URL)応答をrequests.get
#Print(response.text)
レスポンスを返す

#2は、データ解析
DEFのparse_index(HTML)を:
「」 '
映画ランキング、映画、URL、映画の名前、映画監督、映画スター、
映画の年/タイプ、フィルムスコア、映画レビュー、映画の紹介
<DIV CLASS = "アイテム">。*?<EMクラス= "">(。*?)</ em>の。*?<a href=".*?">。*?<スパンクラス= "タイトル" > </ span>の(*。?)
*导演:。?主演(*。?):(。*?)<BR> * </ P> * <スパンクラス= "rating_num" *。?。?。? >(。*?)</ span>を。*?<スパン>(。*?)人评价</ span>を
。*?<スパンクラス= "INQ">(。*?)</ span>の
<divのクラス= "項目">。*?<EMクラス= "">(。*?)</ em>の。*?<a href=".*?">。*?<スパンクラス= "タイトル">(。 *)</ span>の*导演:?。?。(*)主演:?。?(*)<BR> * </ P> * <スパンクラス= "rating_num" *。?>(。?。?。 *?)</ span>を。*?<スパン>(。*?)人评价</ span>を。*?<スパンクラス= "INQ">(。*?)</ span>の
''」
movie_list = re.findall( '<DIV CLASS = "アイテム">。*?<EMクラス= "">(。*?)</ em>の。*?<a href="(.*?)">。 * <スパンクラス= "タイトル"> </ span>の*导演?(*。?):。?(。*?)主演:(。*?)<BR> </ P> *(*。?)。 ?<スパンクラス= "rating_num"。*?>(。*?)</ span>を。*?<スパン>(。*?)人评价</ span>を。*?<スパンクラス= "INQ">( 。*?)</ span>の」
HTML、
re.S)
リターンmovie_listの

#3セーブデータ
DEFのsave_data(動画):
映画ランキング、映画のURL、映画、映画監督の名前、主演映画
#作品イヤー/映画音楽、映画レビュー、映画の概要の種類
トップ、 m_url、名前、daoyan、俳優、year_type、ポイントは、コミット、DESC =映画
データ= F '' '
見て=========== ==========歓迎
ランキング映画を:{トップ}
動画のURL:{m_url}
映画名:{名前}
映画監督:{daoyan}
映画主演:{俳優}
年式:{year_type}
映画の評価:{ポイント}
映画のレビュー:{}コミット
{DESC}:映画を
次回ようこそ========== =========
' ''
印刷(データ)

douban_top250.text '' A 'エンコード=' UTF-オープン(と' 8 " )F AS:
f.write(データ)

を印刷(F '映画:{名前}正常に書き込まれ...')

IF __name__ == '__main__':
= 0 NUM
:(10)でラインレンジ用
URL = F ' https://movie.douban.com/top250?start={num}&filter=「
NUM = + 25
印刷(URL)

#。1. 各家庭への要求は送信
get_page =(URL)index_res

映画情報のための#2。分析のホームページを
= parse_index movie_list(index_res.text)

movie_listにおける映画用:
#Print(動画)
#3。データの維持
save_data(動画)

#selenium基本的なライブラリを使用します
セレンwebdriverをインポート
#どのように見つけることでselenium.webdriver.common.byインポート、By.IDから、By.CSS_SELECTOR
selenium.webdriver.common.keysインポートキー#キーボード操作から
selenium.webdriver.supportインポートexpected_conditionsからなど以下WebDriverWaitと共にEC番号と
selenium.webdriver.support.waitインポートWebDriverWait位からは、ページロードの特定の要素を待つ
インポートタイム
#方法:ブラウザ開口駆動により
ドライバ= webdriver.Chrome(r'chromedriver.exeパス「)

方法:インストールディレクトリwebdriver.exe Pythonインタプリタに駆動/ Scriptsフォルダ
#pythonインタプリタのインストールディレクトリ/スクリプトは、環境変数の設定
環境変数を設定し、インタプリタのインストールディレクトリ#pythonを
試して:
driver.get( 「https://www.jd.com/」)

#10秒間明示的な待ち時間を得るオブジェクト
#はラベルのロードに10秒を待つことができる
待ち時間は= WebDriverWait(ドライバ、10)

要素IDを見つけるために#キーを
= wait.until input_tag(EC.presence_of_element_located(
(By.ID、 'キー')
))
time.sleep(5)

は、製品名の入力ボックスの入力
input_tag.send_keys( '人形')

のEnterキーを押します
input_tagを.send_keys(Keys.ENTER)

time.sleep(20)
最後に:
driver.close()


セレクタ
時間インポート
selenium.webdriver.common.byして、インポートから
selenium.webdriver.common.keysインポートキーから
selenium.webdriver.support.waitインポートWebDriverWaitから
EC AS selenium.webdriver.supportインポートexpected_conditionsから
webdriverをセレンインポートから
ドライバー= webdriverを。クロム(r'chromedriver.exeパス「)

試してみる:

#暗黙の待ち時間:あなたがGETの前に呼び出す必要がある
#は任意の要素をロードするために10秒待っ
driver.implicitly_wait(10)

driver.get(」https://www.baiduを。 COM / ')

明示的な待ち時間:コールの後GETする必要が
(time.sleepを5)。

' ''
===============すべてのメソッド========== =========
要素は、ラベルを見つけるためにある
要素をすべてのラベル見つけることです
' 『』
#の自動ログインBaiduの開始を
#1、#find_element_by_link_text通过链接文本去找
LOGIN_LINK = driver.find_element_by_link_text( '登录')
login_link.click()#点击登录

time.sleep(1)

#2、#find_element_by_idの通过番号去找
USER_LOGIN = driver.find_element_by_id(」 TANGRAM__PSP_10__footerULoginBtn ')
user_login.click()

time.sleep(1)

#3、find_element_by_class_name
ユーザ= driver.find_element_by_class_name('パステキスト入力ユーザ名')
user.send_keys(' ***** ")

#4、find_element_by_name
PWD = driver.find_element_by_name( 'パスワード')
pwd.send_keys( '*****')

= driver.find_element_by_id提出( 'TANGRAM__PSP_10__submit')を
提出します。クリック()
#エンド

。5#、find_element_by_partial_link_text
#ローカルリンクテキスト検索
LOGIN_LINK = driver.find_element_by_partial_link_text( '登録')
login_link.click()

#6、find_element_by_css_selector。
属性セレクタに基づいて要素を見つける
#:.クラス
は##:ID
login2_link = driver.find_element_by_css_selectorを( 'パス-footerBarULogin-.tang ')
login2_link.click()

#7、find_element_by_tag_nameの
DIV = driver.find_elements_by_tag_name(' DIV「)
印刷(DIV)


time.sleep(20)

最終的には:
#は、ブラウザのリリースオペレーティングシステムリソースのクローズ
driver.closeを()


おすすめ

転載: www.cnblogs.com/2328322824chx/p/11121314.html
おすすめ