質問: はてなブックマークで自分でブックマークした記事をpythonでスクレイピングしたいのですが、どのようにアプローチしてrequestとbeatifulsoupを使って行ったら良いのかわかりません。353件全て取得したいです。 ![はてブのブックマーク](https://i.stack.imgur.com/OQHka.png) 出来るだけseleniumは使用したくありません。 もしくはAPIが提供されているみたいなのですが、自分のブックマークを取得するものが見当たりません。 **問題** まず課題として2つあります。 ログイン 最初のidとパスワード javascriptによる無限ロードページですが、ページ数が書いてあるボタンが下部にあったのでそれが使えるかもしれません。 ![はてブ下部のボタン](https://i.stack.imgur.com/e6MUM.png) どなたか詳しいエンジニアの方お力をお貸し頂けると幸いです。 よろしくお願いします。
回答: はてなブックマークの場合は、requestsとbeatifulsoupを使ってスクレピングが可能です。課題については、次のようにして対応できると思います > > 課題1 ログイン 最初のidとパスワード > > > はてなブックマークのログインページに行き、ログインフォームのパラメータを調べる。しかし、ガードが掛かっているので、requestsではログインできませんでした。 > > 課題2 javascriptによる無限ロードページですが、ページ数が書いてあるボタンが下部にあったのでそれが使えるかもしれません。 > > > はてなブックマークのページは、基本はGETで取得できるので、それを使います。また、下部のページ数が書いてある場所を利用してページの情報を取得します。はてなブックマークのページは、公開されているブックマークは誰でも取得できるのでログインは必要ありません。 以下にコードのサンプルを書いておきます。 ``` from bs4 import BeautifulSoup import requests from time import sleep user = 'user' url = 'http://b.hatena.ne.jp/' + user + '/bookmark' r = requests.get(url) page = 1 while True: soup = BeautifulSoup(r.text, 'html.parser') # ブックマークを取得するコードを書く # 「次のページ」がなくなると最終ページということを使用 if soup.find_all(class_="centerarticle-pager-next"): page += 1 r = s.get(url + '?page=' + str(page)) else: break sleep(10) ```