3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Python3とBeautifulSoup使って図書館で借りた本をスクレイピング

Last updated at Posted at 2018-08-19

はじめに

図書館で借りた本のログを取りたいなと思い、貸出中の本のリストを取得するプログラムを書いてみた。今まで借りた本が見れないので、どうにかログを残したいと思ってる。

やったこと

ログインして決め打ちで書名を取得する。HTMLを確認しながら、地道にがんばった。
authenticity_tokenは毎回変わるみたいなので、取得してPOSTする。
マジックナンバーはHTMLを見たら意図がわかると思う。

scrape.py
from bs4 import BeautifulSoup
import requests

payload = {
    'utf8': '',
    'user[login]': 'xxx',
    'user[passwd]': 'yyy',
    'act_login': 'ログイン',
    'nextAction': 'mypage_display',
    'prevAction': '',
    'prevParams': '',
    'kobeid': '',
    'pvolid': '',
    'type': '',
    'shozo_kyk': ''
}

s = requests.Session()
r = s.get('https://www.lib.city.kobe.jp/opac/opacs/mypage_display')
soup = BeautifulSoup(r.text)
auth_token = soup.find(attrs={'name': 'authenticity_token'}).get('value')
# print(auth_token)                                                                  
payload['authenticity_token'] = auth_token

res = s.post('https://www.lib.city.kobe.jp/opac/opacs/login', data=payload)
res.raise_for_status()
# print(res.text)                                                                    

r = s.get('https://www.lib.city.kobe.jp/opac/opacs/lending_display')
soup = BeautifulSoup(r.text)
booklist = soup.find('div', class_= 'table_wrapper lending').find_all('tr')
print(len(booklist)-1)

for book in booklist[1:]:
    book_name = book.find_all('td')[2].get_text()
    print(book_name)

結果はこんな感じ。ほぼ絵本。ちなみに落合陽一氏の本も子育てのこと考えて借りてみたけど、なかなか頭に入ってこなかった。

超AI時代の生存戦略 : 「2040年代」シンギュラリティに備える34のリスト///落合陽一著/大和書房
なにしてあそぶ?///パット=ハッチンスさく/偕成社
にじのピラミッド/アンパンマンプチシアター//やなせたかし作・絵/フレーベル館
これなあに : 英語つき/日本のえほん//星灯社絵/学研プラス
よんでみよう///ごとうゆうか著/岩崎書店
こんくんのおんがくはっぴょうかい : つんつくむらのおはなし/講談社の創作絵本//たしろち/講談社
おまつりのねがいごと : つんつくむらのおはなし/講談社の創作絵本//たしろちさと作/講談

おわりに

HTMLの知識もPythonの知識もBeautifulSoupの知識も中途半端だったけど、検索しながらやったら、まあまあなんとかなった。
このあと、ブクログとかスプレッドシートに入力するプログラムを書きたい。

参考

ログイン

【Python3】ログイン機能付サイトでスクレイピング【requests】【BeautifulSoup】 - Qiita
Pythonでのウェブサイトへのログイン - Qiita

いろいろ取得

PythonとBeautiful Soupでスクレイピング - Qiita
Beautiful Soupを使ってスクレイピング - Qiita
python3でwebスクレイピング(Beautiful Soup) - Qiita
Beautiful Soup Documentation — Beautiful Soup 4.4.0 documentation
[Python] 何度も調べてしまうリスト操作をまとめてみた - YoheiM .NET

3
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?