###前提・実現したいこと
ニコニコ動画の公開マイリスト(=この動画を登録しているマイリスト一覧)をPythonでクローリングしようと思っています。
「ニコニコ動画の公開マイリスト検索(/openlist/sm****)は、AND検索もOR検索もNOT検索もできるっぽい」にある通り、"http://www.nicovideo.jp/openlist/動画ID"の形で取得できるのですが、この画面はログインしないと閲覧できません。
そのため「PythonでCookieを使ってWebサイトにログイン - matsulibの日記」を参考に、この記事のプログラムを再現して動画をダウンロードするところまでは行ったのですが、URLを先程の公開マイリストのページに置き換えるとうまく働かない状況です。
ダウンロードは出来ているのでログインは出来ていると思うのですが、アドバイスいただけると幸いです。
###該当のソースコード
Python
1import requests 2import lxml.html 3from urllib.request import build_opener, HTTPCookieProcessor 4from urllib.parse import urlencode, parse_qs 5from http.cookiejar import CookieJar 6from lxml.html import fromstring 7 8# Cookie利用opener 9opener = build_opener(HTTPCookieProcessor(CookieJar())) 10 11encoding = 'utf_8' # Webサイトの文字コード 12 13post = { 14 'mail_tel': 'メールアドレス', 15 'password': 'パスワード' 16} 17data = urlencode(post).encode('utf_8') 18 19# ログインCookieを取得 20response = opener.open('https://secure.nicovideo.jp/secure/login', data) 21 22# レスポンスの読込、保存 23# with open('out.html', 'w', encoding=encoding) as f: 24# f.write(response.read().decode(encoding)) 25response.close() 26 27# クローリング 28## 最終的には公開マイリストの被登録件数を取得したいと考えています。 29url = 'http://www.nicovideo.jp/openlist/nm10007815' 30with opener.open(url) as response: 31 print(url) 32 root = lxml.html.fromstring(response.read()) 33#ここのrootがNoneになっていました。 34 size = None 35 elems = root.find('.//div[@class="mb8p4"]') 36 if elems is not None: 37 for elem in elems: 38 size = elem.find('.//p[@class="font12"]').find('.//strong').text 39 print(size)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/10/03 11:31