Help us understand the problem. What is going on with this article?

Pythonでseleniumを用いたスクレイピング

pythonにてseleniumを使う機会があったので、メモ。

chromedriverのダウンロード

以下のURLからchromedriverをダウンロード
http://chromedriver.chromium.org/downloads
firefoxdriverもあるらしい。

ライブラリの追加

➜   pip install selenium

無事インストールできたらOK

スクリプトでseleniumとchrome driverを読み込む

from selenium import webdriver
driver = webdriver.Chrome(executable_path="./chromedriver")

chromedriverへのパスは注意。上記コードは同じディレクトリに配置想定。

所定のURLのページを開く

url  = "https://www.google.co.jp/";
driver.get(url)

要素を取得する

以下の2つのメソッドを使用した。

  • find_elements_by_xpath
    • リストなど、複数あるものを取得。
    • ループを回してリストに繰り返し処理をかけて処理を効率化することができる。
  • find_element_by_xpath
    • 特定の要素を狙って取得

なお、xpath 以外にも、

  • id名
  • class名
  • その他

などの要素取得方法がある。
参考

今回は xpath を使用した。xapthはデベロッパーツールから確認できる。
macのショートカットは、 command + option + i

デベロッパーツールにて、HTML要素を右クリックするとメニューが出てくるので、
Copy > Copy XPath の順で選択。

スクリーンショット 2019-03-05 21.31.27.png

要素の中の属性を取得したい場合

要素(HTMLタグ)の中の属性(attribute)を取得したい場合は get_attribute("属性名") を使う。

driver.find_element_by_xpath("//div[@class='hoge']/div[1]/a/img").get_attribute("src")

例では src 属性の値を取得している。

取りたい要素にidやclassが割り振られておらず、同じタグが子要素として並んでいる場合

以下のような場合に b を取得するにはどうしたらいいか?

<div id="hoge">
  <div>a</div>
  <div>b</div>
  <div>c</div>
</div?>

以下のようにする。

driver.find_element_by_xpath("//div[@id='hoge']/div[2]").text

2番目に格納されているdivと明示的に示せば、bが取得できる。
参考

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away