こんばんは。平日ヌルっとスタートしました。
11日目、頑張っていきます。
実はこの間の10日目で「Python1年生」を完了し、めでたく今日からは2年生になりました。
「スクレイピングのしくみ」しかないと思ってそれを買ってきたので、まずはスクレイピングをやってみたいと思います。
その次は何にしようかな…
というわけで、スクレイピングのお勉強スタートです。
始めに、WEBスクレイピングはWEBサイトにアクセスして色々な情報を調べてくるためのものなので注意事項がいくつか載っていました。
・著作権を侵害しない
・サイトに負荷をかけすぎない
・「スクローリング」禁止のところからスクローリングしない
どこかのサイトをうっかり妨害してしまわないかだいぶ不安です…
まずは、練習用のサイトに行って情報を取ってくるプログラムです。
「requests」というライブラリをインストールしてから始めます。
練習用のサイトから文字列データを持ってくると、こんな感じになっていました。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サイトのタブに表示されるタイトル</title>
</head>
<body>
<h2>ページ上部の見出し</h2>
<ol>
<li>箇条書き1個目</li>
<li>箇条書き2個目</li>
<li>箇条書き3個目</li>
</ol>
</body>
</html>
ふむふむ。<>で始めて、</>で終わらせるということみたいです。
1つ勉強になりました。
これが分かったらワードプレスとやらも作れるようになるのでしょうか。
次にファイルを開く・書き込む・閉じるのプログラムです。
「f」という関数?が書かれているのですが、調べてみたところこの本の中で勝手に命名して作っている様子。
既にある関数なのか(ExcelのSUMとか)、プログラムの中で新しく作ろうとしている関数なのか、判別がつかないのが難しポイントです。
初心者あるあるかもしれません。
ここで初めてお目にかかる構文が。「with文」というものです。
どうやら、「open」という命令をwith文の中で使うと処理が終わったら勝手に「close」してくれるそうです。
賢すぎてやや怖い気持ちがしてきます。
最新技術ってすごい…。
閉じ忘れによるプログラムのエラーを避けてくれる優れものということなので、不注意が過ぎる私は必ず覚えておかねばなりません。
さて、WEBサイトからデータを引っ張り出してくるプログラムは書けたので次のステップです。
「Beautiful Soup」というライブラリを使ってHTMLを解析するみたいです。
「美しいスープ」と名付けるネーミングセンス、推せる…
そういえば、HTMLの<>で囲まれた部分は「タグ」と呼ぶらしいです。
独学だと呼び方が分からないものがたくさん出てくるのでよく困ります。
soup.find("タグ名")とすると、指定したタグに該当するテキストを戻してくれるそう。
例えばfind("li")としたら、
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>サイトのタブに表示されるタイトル</title>
</head>
<body>
<h2>ページ上部の見出し</h2>
<ol>
<li>箇条書き1個目</li>
<li>箇条書き2個目</li>
<li>箇条書き3個目</li>
</ol>
</body>
</html>
<li>箇条書き1個目</li>が戻されます。
ちなみに、find("li").textとすると、タグが消えて
箇条書き1個目が戻されます。
へぇ~…
まだ勉強を始めて11日目ということもあるのですが、やはりプログラムの中で新しく命名された関数と元あった関数の区別が分かりにくい…
この章はまだ続きがあるのですが、早めに寝て明日に備えるため今日はこのへんで。
10日目とは全く違って簡単に分かりそうで奥が深そうな、そんな感じでした。
ではおやすみなさい…
追伸
優しい人が損をする会社に未来はないと思う毎日。
良い人材逃げまくり弊社