参考サイト
取得したいデータの位置を確かめる
webスクレイピングではHTML/XML中の特定の位置にあるテキストを抽出するのが目的となるため、まず対象のデータ位置を確認します。この際、Chromeの検証機能が使いやすいです。(以下参照)
Chromeデベロッパー・ツール(要素を検証)の基礎的な使い方
ページを右クリックして「検証」を選択します。(Ctrl+Shift+Iでもよい)
すると画面右半分にHTML要素が現れ、タグを選択すると画面上の対応する部分が反転します。これを使って取得したいデータを特定できるところまで掘り下げていきます。
なおYahoo!ファイナンスの場合は以下の様な階層となっています。
<html>
<body>
<div id="wrapper">
<div id="contents">
<div id="contents-body">
<div id="main">
<div class="padT12 marB10 clearFix">
<table class="boardFin yjSt marB6">
<tbody>
<tr>
<td>
ここに基準価格とか
取得したいデータ位置をXPathで書く
XPathとはHTML/XML文書中の任意のコンテンツの位置を表すためのフォーマットです。Chromeでは右クリック -> Copy -> Copy Xpath
でXPathが取得できます。(以下参照)
Chromeだけで任意のノードのXPathを簡単に取得 たぶん革命
今回はid=mainのdiv要素以下にあるテーブルのtd要素がすべてほしいので以下のようにしました。
//*[@id="main"]/div/table//td
parser()でHTMLを取得し、XPathで必要な要素を抽出する
ここからはPythonで行います。urlをlxml.html.parser()に渡してHTML_Elementsを取得し、そこからXPathで指定した要素を抽出します。最後に型式を整えて[日付, 基準価格, 純資産総額]型式のリストで出力します。日付は最後にyyyymmdd型式の文字列としました。
コメント