なろう分析記録

『小説家になろう』をふくめ『ネット小説投稿サイト』を分析する。コード置き場,主にPython,javascript,たまに創作。

【Pythonスクレイピング】requests.getでcookieが必要な年齢確認ページなどを回避する方法

Pythonスクレイピングをする時、年齢確認ページなどのクッキー認証がハードルになる時があります。

ここではPythonスクレイピングでもっとも一般的な「requests.get」を使って、単純なcookieの値をそのまま持たせることで、クッキー認証を回避する方法を紹介します。

f:id:karupoimou:20190511005312p:plain:w400
年齢確認ボタン

まず「cookie」を調べる

chromeでの調べ方

chromeの場合、ブラウザのアドレスバーの左端に表示されている『f:id:karupoimou:20190511011306p:plain』マークから調べる方法が簡単です。

f:id:karupoimou:20190511005747p:plain:w400
chromecookieの調べ方
f:id:karupoimou:20190511005504p:plain:w400
cookieを調べる
f:id:karupoimou:20190511005931p:plain:w400
名前と値の調べ方

サイト内でクッキーを覗くと、だいたいそれらしき物が見つかります。

消して調べてみる

認証に使われているクッキーがどれであるかについては、そのクッキーを一度削除してページをリロードすれば分かります。

リロードした時に年齢確認ページに飛べば、それが年齢確認に使われていたクッキーであることがわかります。

この場合、クッキーの記載は以下の通りになります。

cookie = {'over18': 'yes'}

クッキーの指定方法

使用方法は簡単で、requests.getのパラメータとして持たせればokです。

cookie = {'over18': 'yes'}  #クッキーの指定
response = requests.get(url=url, headers=headers, cookies=cookie)

使用例

# スクレイピング
import requests
from bs4 import BeautifulSoup

# URLの指定        
url = 'https://noc.syosetu.com/top/top/'

#ユーザーエージェントの設定(設定必須)
headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"}

# ここでcookieを指定
cookie = {'over18': 'yes'}  #クッキーの指定

#htmlの取得
response = requests.get(url=url, headers=headers, cookies=cookie)
html = response.content

#BeautifulSoupで扱えるようにパースします
soup = BeautifulSoup(html, "html.parser")

#表示
soup

参考にしたページ

qiita.com

qiita.com