49549


はてなブックマークで自分でブックマークした記事をpythonでスクレイピングしたいのですが、どのようにアプローチしてrequestとbeatifulsoupを使って行ったら良いのかわかりません。353件全て取得したいです。

[![はてブのブックマーク](https://i.stack.imgur.com/OQHka.png)](https://i.stack.imgur.com/OQHka.png)

出来るだけseleniumは使用したくありません。

もしくはAPIが提供されているみたいなのですが、自分のブックマークを取得するものが見当たりません。

**問題**  
まず課題として2つあります。

ログイン 最初のidとパスワード

javascriptによる無限ロードページですが、ページ数が書いてあるボタンが下部にあったのでそれが使えるかもしれません。

[![はてブ下部のボタン](https://i.stack.imgur.com/e6MUM.png)](https://i.stack.imgur.com/e6MUM.png)

どなたか詳しいエンジニアの方お力をお貸し頂けると幸いです。  
よろしくお願いします。


CC BY-SA 4.0
2018-10-21T14:02:38.077
49506
2020-04-06T06:26:02.673
2020-04-06T06:26:02.673
3060
22565
question
python javascript python3 web-scraping beautifulsoup
はてなでブックマークした記事のURLとタイトルを全部pythonでスクレイピングしたい。


はてなブックマークの場合は、requestsとbeatifulsoupを使ってスクレピングが可能です。課題については、次のようにして対応できると思います

> 課題1 ログイン 最初のidとパスワード

はてなブックマークのログインページに行き、ログインフォームのパラメータを調べる。しかし、ガードが掛かっているので、requestsではログインできませんでした。

> 課題2 javascriptによる無限ロードページですが、ページ数が書いてあるボタンが下部にあったのでそれが使えるかもしれません。

はてなブックマークのページは、基本はGETで取得できるので、それを使います。また、下部のページ数が書いてある場所を利用してページの情報を取得します。はてなブックマークのページは、公開されているブックマークは誰でも取得できるのでログインは必要ありません。

以下にコードのサンプルを書いておきます。

[code]

    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)
    
[/code]


CC BY-SA 4.0
2018-10-23T01:10:37.320
49549
2018-10-25T01:43:00.063
2018-10-25T01:43:00.063
15171
15171
49506
answer