2017年12月17日日曜日

python勉強していてhtml.parserってなんやねん?

プログラミングの言語って割とどれでも一緒な気がするんですよ。あくまで何もわかってない素人の戯言ですが。

でも・・・

html.parser


これ初めて見たんですよね・・・まあ他にも結構見慣れない文字が多くてすでに前言が危うくなってるんですが(笑)

ぐぐったらこの人pythonを使用してのスクレイピングの記事も書いていたんですね?というかめっちゃ最近の記事なのである意味自分にはラッキーでした(笑)
ちょっと前に勉強開始していたらこの人の記事にたどり着けませんでしたものね。

エクセルのVBAでスクレイピングをぐぐると一番最初くらいに出てくる記事を書いている人なんですが、流石それだけあってすごく初心者にもまったくプログラミング経験がない人にでもわかるくらいの平易な表現でものすごく分かりやすく解説してくれています。

そのpython版の記事も書いているようでこの度発見しました(笑)



BeautifulSoupオブジェクトを生成する
Beautiful Soupモジュールを使ってHTMLを解析するためには、まずHTML文字列からBeautifulSoupオブジェクトを生成します。
書式は以下の通りです。

bs4.BeautifulSoup(HTML文字列, パーサー)


パーサーというのはパースをするやつ、つまり解析をするための機能のことで、ここで好みのパーサーを指定できます。
html5libやlxmlなど、いくつか種類がありますが、使用する場合は別のモジュールのインポートが必要になります。ひとまず、困ることが出てくるまでは、Pythonに標準で付属している「html.parser」を指定しておきます。
引用させていただくとこんな感じだそうです。

HTML解析するためにBeautifulSoupオブジェクトとしてぶっこめばいろいろいじれる。
そのおまじないの文言なんですね。

プログラム風に書いておくなら

変数=bs4.BeautifulSoup("https://www.yahoo.co.jp/", "html.parser")
みたいな?

あとついでに出てきた興味深いページのリンクを貼っておこう。いつかみれるといいのだが。
ブラウザの仕組み: 最新ウェブブラウザの内部構造

python勉強メモ日付や時間を表示したい時

import datetime

pythonの機能を使うには上記のようにインポートしないとダメみたいです。

import datetime
today=datetime.date.today()
todaydateil=datetime.datetime.today()
print(todaydateil)
print(today)
print(today.year)
print(today.month)
print(today.day)
print(todaydateil.year)
print(todaydateil.month)
print(todaydateil.day)
print(todaydateil.hour)
print(todaydateil.minute)
print(todaydateil.second)

print(todaydateil.microsecond)

上のコピペしてくれたらそのまま動くはずです。

日付を増減する
import datetime

today=datetime.datetime.today()
print(today)
today=today+datetime.timedelta(days=1)
print(today)

timedelta(days=1)の部分は1日増加するって意味みたいです。時間の増減をしたければ

(days=1)のところをhours=増減したい数字にします。

一つ初心者に余計な事言わない方がいいかもしれないけど自分用備忘録

上のコードで一度todayにプラスしたものを入れ直してますけど直接やった時に

TypeError: unsupported operand type(s) for +:

型が違うから計算できないという意味のエラーが出ました。

つまり一度入れ直してるのは型変換してます。


pythonの勉強って初心者殺しやん

いやあ、インストールから苦労しました・・・・。
python自体のインスコはスムーズだったのですが、環境変数の設定してそのあとBeautifulSoupをインスコする前提のPipってやつだったかな、ウィンドウズ7ってなんか知らんけどCドライブ?プログラムファイルフォルダ?にインスコすると管理者権限とかそういうので動作やインスコが上手く行かない事多いんですよね。今回まさにそれで一度アンインスコしてからインスコし直しました。

したら今度はpython用のフォルダ作ってなかったから外付けドライブの直下にバラバラで入っちゃってもう最悪(笑)まあいいです、普段使いで学習する分には問題ないです。

それでBeautifulSoupもインスコ出来たしさあ、勉強しようと思って以前からたまにお世話になっているドットインスクールを観ていたら・・・pythonの講座最初のいくつかだけ無料公開であとは有料会員にならないと観れない!?
え~、ついにドットインスクールもそんなしわい感じになってきましたか・・・。

じゃあ他のところって探してもめぼしいのが無いんですよねえ・・・。
僕は辞書みたいに淡々とある講座って好きじゃないというかああいうのはある程度マスターしてから不明な点が出てきたら逐一確認していくというケースでは有用だけどまったく右も左もわかりませんって初心者には向いてないと思います。

それでもなんとかやってみて・・・
プログラム初心者の人にアドバイス僭越ながらするとソースコードは自分で入力しない方がいいですよ。コピペでいいです。プログラムってちょっとした本当に些細な間違いでもうんともすんとも言わずそれで挫折する確率かなりあると思います。
昔に比べればユーザーサポート、入力支援もかなり充実してきていると思いますが初心者の頃はもう恐怖心の塊ですしね。

で、コピペ相変わらず僕もするんですが・・・・

動かない!!!!!!!!!!!!!!!!

30分くらい格闘して気付きました。

僕がインスコしたpythonはバージョン4でネット上にある講座の類はそれ以前のバージョンのものなんですね。

記述の仕方が変わっていてコピペして実行しても動かない(笑)

こんなひどい環境はないわ、これじゃあ本などを買って勉強しようにも初心者は殺されますよ。

まあ僕はちょっとだけプログラムをいじってきた経験があるのででも本当にちょっとなので苦労した末それに気づいてかなり時間を無駄にしました(笑)

でもスクレイピングでぐぐったらpython出てきたのだけど本当に簡単な記述で出来るみたいなのでまだ好奇心は尽きてないです。




2017年12月13日水曜日

なぜかpython勉強しようかと思ったらpipとBeautiful Soupってので躓いて環境変数をぐぐる羽目になった



環境変数って確か昔も引っかかった記憶があるけどまったく覚えてない・・・・・・。

どうやらそのOSが使える変数――という意味だろうか。
きっと日本語に翻訳したのがすごくわかりづらいイメージしづらい単語になっちゃってるんだろう。

よくわからんが環境変数Pathの設定とかいうのは・・・・・・
その変数にパスの文字列が入ってるっていう事とでも思っておくか。
名前の通り変数pathにそのプログラムのフルパスが入っていて他のプログラムとかがそのパスを利用していろいろ参照したりするのかな。

間違っているかもしれないがとりあえずこう理解しておく。
勉強する時は何でも「適当」に理解しておくことが大事だと思っている。
「厳密」に「正確」にいちいち理解していったらちっとも進まないし疲れちゃって投げ出すのが落ちだ。

ある種のイメージさえ持てたらそれでいい。それがはまらなくなったらその時に変更すれば充分だ。

コントロールパネル→システム→システムの詳細設定でシステムのプロパティを開く。

システムのプロパティの詳細設定タブにある環境変数ボタンをクリック。

Pathという変数がすでにあるはずなのでこれをダブルクリック。

僕の場合はすでにrubyのパスが入っていたので新たに追加する場合は

「;」を打った後パスを入力する。

ちなみにpythonが入ったフォルダをの上部のずらっとそのフォルダの位置が記されているバーをクリックすればそのパスが表示されるのでそれをコピペした。

さらに参照したこのブログさんとかみんなpythonだけでなくscriptフォルダもやっていたので真似してそっちもやった。