前回はページ内すべての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()」という関数を調べるやつ
データベースとか扱えたら便利だけど、よくわかってないし、それは別に準備しないといけないのでスルー
ファイル作るだけなら簡単
とりあえず終わり
なんか書きたいことできたら続ける
‘ω’)ノシ
コメントを残す