SeleniumでWebスクレイピング(6) サイトを解析するうえで便利なTips

SeleniumでWebスクレイピング(6) サイトを解析するうえで便利なTips

XPath

ChromeのF12キーで検証ツールがあることはご存じかと思います。

検証ツール内において、取得したいタグの階層を一意に示せるのがXPathです。

Chromeでは、このXPathをワンアクションでコピーできます。


ChromeXPathをコピーする

方法:

検証ツール上の該当タグを右クリック→Copy→Copy XPath


以下のようなパスがコピーできます。

/html/body/div[2]/div/div/div[1]/ul/li[2]


XPathで要素を取得

xpath = '/html/body/div[2]/div/div/div[1]/ul/li[2]'
elem = browser.find_element_by_xpath(xpath)


URLで複数クエリを投げるサイトからのデータ取得

毎回検索フォームを経由しなくても、URLでクエリを投げられるサイトであれば、クエリを含むURLを生成してアクセスすると楽な時があります。


例えば、Yahoo路線情報で乗り換え検索してみると、クエリ付きのURLが得られます。

https://transit.yahoo.co.jp/search/result?flatlon=&fromgid=&from=%E6%9D%B1%E4%BA%AC&tlatlon=&togid=&to=%E6%96%B0%E5%AE%BF&viacode=&via=&viacode=&via=&viacode=&via=&y=2021&m=01&d=17&hh=19&m2=6&m1=1&type=1&ticket=ic&expkind=1&ws=3&s=0&lb=1&sr=1&kw=%E6%96%B0%E5%AE%BF

URLデコードしてやれば、「from=%E6%9D%B1%E4%BA%AC」と「to=%E6%96%B0%E5%AE%BF」が駅名であることが分かります。

この駅名部分をformatを使って指定してやれば、好きな駅名を指定できるというわけです。

'https://transit.yahoo.co.jp/search/result?flatlon=&fromgid=&from={}&tlatlon=&togid=&to={}&viacode=&via=&viacode=&via=&viacode=&via=&y=2021&m=01&d=17&hh=19&m2=6&m1=1&type=1&ticket=ic&expkind=1&ws=3&s=0&lb=1&sr=1&kw=%E6%96%B0%E5%AE%BF'.format('品川' ,'大崎')


動かしてみます。

from selenium import webdriver
browser = webdriver.Chrome()
url='https://transit.yahoo.co.jp/search/result?flatlon=&fromgid=&from={}&tlatlon=&togid=&to={}&viacode=&via=&viacode=&via=&viacode=&via=&y=2021&m=01&d=17&hh=19&m2=6&m1=1&type=1&ticket=ic&expkind=1&ws=3&s=0&lb=1&sr=1&kw=%E6%96%B0%E5%AE%BF'.format('品川' ,'大崎')
browser.get(url)

指定した駅名で検索されたページが表示されました。


これにて、Webスクレイピングの記事は完了です。