LoginSignup
7
9

More than 5 years have passed since last update.

Twitter ログインのウェブサイトをスクレイピングする

Posted at

Twitter などの OAuth 認証でログインするウェブサイトのスクレイピングをするときってどうすればいいんだっけと思ったのでメモ。

  1. まず該当ウェブサイトの Twitter 認証用ページへ行く
  2. Twitter にリダイレクト
  3. 認証後, Callback URL に遷移

この流れの通り実装してあげればよい。

# initialize
import requests
from bs4 import BeautifulSoup
session = requests.Session()
# login with twitter
redirect_from = "https://*****.***/auth/twitter"
res = session.get(redirect_from)
soup = BeautifulSoup(res.text.encode(res.encoding), 'lxml')
oauth_token = soup.find(attrs={'id':'oauth_token'}).get('value')
authenticity_token = soup.find(attrs={'name':'authenticity_token'}).get('value')
redirect_after_login = soup.find(attrs={'name':'redirect_after_login'}).get('value')

twitter_id = "********"
twitter_password = "********"
dataset = {
               'authenticity_token': authenticity_token,
               'redirect_after_login': redirect_after_login,
               'oauth_token': oauth_token,
               'session[username_or_email]': twitter_id,
               'session[password]': twitter_password
          }

twitter_oauth_url = "https://twitter.com/oauth/authorize"
login_res = session.post(twitter_oauth_url, data=dataset)
login_soup = BeautifulSoup(login_res.text.encode(login_res.encoding), 'lxml')
redirect_to = login_soup.select('.maintain-context')[0]['href']
session.get(redirect_to)

これで認証された状態が得られます。あとはよしなに。

References

7
9
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
7
9