【Python3】selenium、chromedriverを使ってみる3回目【selenium】

前回はページ内すべてのaタグのURLを取得するのを書いた
今回は少し手を加え、cssセレクタで指定した要素内、またはセレクタで指定したaタグのリンクを取るのを書いてみようと思う

あと、ついででファイルにテキストとして書き出す

ソースコードは流用なので前回を見直さなくても動かせるが、一応前回と前々回のページのリンクを貼っておこう
前回
前々回

まずは前回最後のソース

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("http://www.python.org")

es = driver.find_elements_by_tag_name("a")  # 有るだけ
for n in es:
    print(n.get_attribute("href"))

driver.close()

コレを変更していく

原油ごくごくトップページで試行

せっかくなんで、自分のトップページを使用する

ターゲットのURLを原油ごくごくのトップページに変更

driver.get()内のURLを変更

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.kokoja-hourehore.com")  # URLを変更

es = driver.find_elements_by_tag_name("a")
for n in es:
    print(n.get_attribute("href"))

driver.close()

範囲を指定して出力する

ページ全体ではなく、一部の範囲内に有るリンクの一覧を取るとする
まずは変更したソース

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.kokoja-hourehore.com")

target_elm = driver.find_element_by_css_selector("div.kanren") # cssセレクタを使って最新記事部分だけを指定

es = target_elm.find_elements_by_tag_name("a")  # driver → target_elmに変更、上の行で指定した要素だけ使う
for n in es:
    print(n.get_attribute("href"))

driver.close()

一覧内にあるリンクだけを出力する

記事毎に以下の3つが出力されている
・サムネイル画像についているリンク
・見出しテキストについているリンク
・カテゴリ名についているリンク

さらに対象を絞って出力する

同じリンクが出てしまったので、見出しテキストのリンクだけを取ることにする
一部変更したのがコレ

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.kokoja-hourehore.com")

target_elm = driver.find_element_by_css_selector("div.kanren")

es = target_elm.find_elements_by_css_selector("h3 a")  # css_selectorに変更し、「h3(見出しタグ)内のaタグ」を指定
for n in es:
    print(n.get_attribute("href"))

driver.close()

これで書く記事毎に1つずつ、リンクのURLを取得

ついで:テキストファイルに書き出す

もののついでじゃ
テキストファイルを作成して書き出すぞ

for文の近くを以下のように変更
・プログラムファイルと同じパフォルダ内に「links.txt」というファイルを作成
・すでに同じ名前のファイルがある場合は上書き
・ファイルに文字列として書き込む

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("https://www.kokoja-hourehore.com")

target_elm = driver.find_element_by_css_selector("div.kanren")

es = target_elm.find_elements_by_css_selector("h3 a")

with open("links.txt", "w", encoding="utf-8") as f:  # ファイルを作成して書き込む準備「with」と「open」
    for n in es:
        f.write(n.get_attribute("href") + "\n")  # 書き込み「write」

driver.close()

ファイルの書き込みとかそこら辺は、pythonの「open()」という関数を調べるやつ

データベースとか扱えたら便利だけど、よくわかってないし、それは別に準備しないといけないのでスルー
ファイル作るだけなら簡単

とりあえず終わり
なんか書きたいことできたら続ける

‘ω’)ノシ

コメントを残す

メールアドレスが公開されることはありません。