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

















コメントを残す