🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

405閲覧

タイトルを入力してくださいclose 回答がつきやすいタイトルにしましょう close「〜について」「〜に関して」などの曖昧な表現を避ける panorama_fish_eye問題や実現したいことの要点

Lass

総合スコア1

HTTP

HTTP(Hypertext Transfer Protocol)とはweb上でHTML等のコンテンツを交換するために使われるアプリケーション層の通信プロトコルです。

URL

URL(ユニフォームリソースロケータ)とは、インターネット上のリソース(Webページや電子メールの宛先等)を特定するための形式的な記号の並びの事を言う。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/02/21 11:43

前提・実現したいこと

VisualStudioでpython開発を行っています。
urllib.request.urlopenを利用して特定のURLを叩いた時のレスポンスを取得したいのですが、ログイン情報?セッション情報?が保持出来ていない気がします。

ちょっと文字での説明が下手なのですが・・・
例えば、yahooにログインしているchromeがあります。
VisualStudioでデバッグをスタートするとlocalhostアクセスしたTESTページがが同chromeの新規タブとして開かれると思います。

自分の想定していた考えでは、同じブラウザで開いている(タブは別ですけど)ので、TESTページにあるボタンからpyファイルを実行しurlopen(知恵袋のページ)を行った場合、ログインしている状態で知恵袋のページにアクセスでき、そのレスポンスが帰ってくる想定だったのですが、非ログイン状態で知恵袋のページのレスポンスが帰って来ました。

ちょっとわかりにくいのですが、chromeでログイン認証が完了している場合で、そのログインが成功している状態で特定のページを開く方法をご存知の方がいれば、ご教授頂きたいです!

teratailすら利用するのが初めてなのでとても見にくくて申し訳ないです。。。

該当のソースコード

html

1 <div>Relay 1: 2 <form action="{% url 'yahoo' %}" method="POST"> 3 {% csrf_token %} 4 <input type="submit" value="yahoo" id="updata_button_id" /> 5 </form> 6 </div>

py

1※urls 2path('yahoo', views.yahoo, name='yahoo'),

py

1※views 2def yahoo(request): 3 if request.method == 'POST': 4 yahoo.tie()

py

1※yahoo 2from urllib.request import urlopen 3 4# コンスト 5URL = 'https://chiebukuro.yahoo.co.jp/' 6HTTP_STATUS_OK = '200' 7 8# restでアイテムリストを取得してHTML形式を返す。 9def get_tie(): 10 return urlopen(URL) 11 12def tie(): 13 res = get_tie() 14 if str(res.getcode()) != HTTP_STATUS_OK: 15 print('取得失敗!:' + str(res.getcode())) 16 else: 17 print(res.read().decode('utf-8'))

補足情報(FW/ツールのバージョンなど)

Python 3.7 64bit

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2021/02/21 11:55

質問のタイトルが意味不明ですよ
guest

回答2

0

chromeでyahooにログインした状態で、InternetExplororとかSafariでyahooのページを見たら、非ログイン状態になります。
それと同じように、chromeでyahooにログインした状態でurlopenしたら非ログイン状態です。

私は使ったことはありませんが、Python + Seleniumを使えばできるのでしょう。

投稿2021/02/21 12:12

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

https://stackoverflow.com/questions/12382319/python-resume-web-session-from-urllib2-after-manual-browser-login
こちらが参考になるかと思います。
わたしもSeleniumとかPlaywrightを利用するのが簡単で良いと思います。

投稿2021/02/21 12:11

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問