2-1
・HTTP通信
基本的に「要求に対して応答を返す」方式。ステートレス通信(同じURLのアクセスに対して、同じデータが返される通信)であり、前回どんなデータがやりとりされたかの情報を保持することはない。
・クッキー
WEBブラウザを通じてサイトの訪問者のコンピュータに一時的なデータを保存しておく仕組み。HTTP通信のヘッダーを介して入出力されることになっていて、訪問者(サイト閲覧者)が容易にデータの改変を行うことができる。
・セッション
クッキーを使ってデータを保存するのは同じだが、保存するデータは「訪問者に付与する固有ID」のみで、実際のデータはWebサーバ側に保存しておく。
セッションを利用することによって、データを保存することができるようになり、会員制サイトや通販サイトを実現できる。
requestsモジュール
本の内容と前後するけど......。
requestsモジュールでデータを取得できる。
出力の一行目は普通のテキスト、二行目はb'...'となっており、これはpythonでバイナリであることを示している。バイナリで受け取れると都合がいいのが画像データ。
これで得られる画像↓
.......。
⭐︎Webサイトにログインするプログラム(仮)
requestsモジュールを使うことで、ログインに必要な情報をポスト(入力)できたり、リンクをゲットできる。
import requests from bs4 import BeautifulSoup from urllib.parse import urljoin USER = 'JS-TESTER' PASS = 'ipCU12ySxI' #sessionでログインを行う session = requests.session() #back,mml_idはログイン時に指定する値。username_mmlbbs6みたいなのは値を入れる場所につけられた名前(ソースを見ればわかる) login_info = { 'username_mmlbbs6': USER, 'password_mmlbbs6': PASS, 'back' : 'index.php', 'mml_id' : '0' } url_login = 'https://uta.pw/sakusibbs/users.php?action=login&m=try' #本にはhttpとなっているがhttpsにしないとエラーが出る res = session.post(url_login, data = login_info) #ログインを行う res.raise_for_status() #エラーならここで例外を発生させる soup = BeautifulSoup(res.text, 'html.parser') a = soup.select_one('.islogin a') #isloginは1つしかないのでCSSセレクタで抽出 if a is None: print('マイページが取得できませんでした') quit() url_mypage = urljoin(url_login, a.attrs['href']) print('マイページ=', url_mypage) res = session.get(url_mypage) res.raise_for_status() #お気に入りデータの表示 soup = BeautifulSoup(res.text, 'html.parser') links = soup.select('#favlist li > a') #favlistの下の階層がliであることを表している(favlist > liでもいい) for a in links: href = a.attrs['href'] title = a.get_text() print('-', title, '>', href)