質問編集履歴

5 誤植の修正

khaii21

khaii21 score 16

2018/06/02 15:34  投稿

Python3 スクレイピングでログイン出来ずタイムアウト?になる
### 前提・実現したいこと
Python 3です。
Cookie認証が必要となるサイトに対してスクレイピングのコードを書きました。
ポートが閉じているわけではないのですが、どうやらタイムアウトしている様子です。
他の検証環境でスクリプト自体は正常に動作する事を確認しています。
他者がPerlで同様なスクリプトを作成しましたが、問題なく可動している事もあり
接続経路には問題がないのではないかと考えています。
```
Perlでは下記のモジュールを利用して問題なく接続が出来ます
use LWP::UserAgent
use HTTP::Request
use HTTP::Cookies
```
原因をつきとめる為に、これから何を調べればよいのか行き詰まっています。
原因の特定、問題解消のためにお知恵を貸して頂けないでしょうか。
### 発生している問題・エラーメッセージ
実行後、暫くしてから下記のメッセージが出力されてエラー終了します。
```
通常のエラーメッセージ(抜粋)
Traceback (most recent call last):
File "hoge.py", line 159, in <module>
 response = opener.open(hoge_url, data)
File "requests.py", line 532, in open
 response = meth(req, response)
File "requests.py", line 642, in http_response
 'http', request, response, code, msg, hdrs)
File "requests.py", line 564, in error
 result = self._call_chain(*args)
File "requests.py", line 504, in _call_chain
  result = func(*args)
File "requests.py", line 756, in http_error_302
 return self.parent.open(new, timeout=req.timeout)
File "requests.py", line 526, in open
 response = self._open(req, data)
File "requests.py", line 544, in _open
 '_open, req)
File "requests.py", line 504, in _call_chain
 result = func(*args)
File "requests.py", line 1361, in https_open
 context=self._context, check_hostname=self._check_hostname)
File "requests.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connectopn time out>
```
```
import backtrace を仕込んで出力したエラー内容を降順(抜粋)
756 request.py http_error_302 --> return self.parent.open(new, timeout=req.timeout)
504 request.py _call_chain --> = func(*args)
564 request.py error --> result = self._call_chain(*args)
642 request.py http response --> 'http', request, response, code, msg, hdrs)
532 request.py open --> response = meth(req, response)
160 request.py <module> --> response = opner.open(hoge_url, data)
```
### 該当のソースコード
```
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from urllib.request import build_opener, HTTPCookieProcessor
from urllib.parse import urlencode, parse_qs
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._craete_unverified_context
hoge_url = "https://hoge.co.jp/login"
encoding = " utf-8"
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
response.close()
```
### 試したこと
同じ実行環境でcurlコマンドを試すと、認証エラーのレスポンスが返ってくるので接続は可能な様子です。
python2で同じようなスクリプトを書いてみて試しましたが上記のエラーとなります。
エラー内容からリダイレクト?の影響でタイムアウトしていると考えたのですが
対話式で該当のサイトにgetリクエストした場合には200のレスポンスが返ってきます。
```
>>> import requests
>>> res = requests.get('https://hoge.co.jp/login')
>>> 200
```
### 少し見えてきたこと
該当のURLですが、requestsモジュールを使うとレスポンスが返って来ました。
```
import requests
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
hoge_url = "https://hoge.co.jp/login"
response = response.post(URL, data=post)
print(response.text)
```
Python初心者であるため、色々と検索して下記の手法を組んだのですが、
こちらはCookie認証が必要との情報を見かけて取り入れました。
```
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
```
上記とrequestsモジュールとの違いをきちんと理解できていませんが、
もし上記と同様なことをrequestsモジュールを使って出来るのであれば、きちんと
認証が通るのではないかと考えています。
equestsモジュールを使ったCookie認証のやり方をご存知の方がいらっしゃいましたら
requestsモジュールを使ったCookie認証のやり方をご存知の方がいらっしゃいましたら
ご教授頂けないでしょうか。
  • Python

    22144 questions

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

  • Python 3.x

    15320 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

4 エラー修正

khaii21

khaii21 score 16

2018/06/02 15:28  投稿

Python3 スクレイピングでログイン出来ずタイムアウト?になる
### 前提・実現したいこと
Python 3です。
Cookie認証が必要となるサイトに対してスクレイピングのコードを書きました。
ポートが閉じているわけではないのですが、どうやらタイムアウトしている様子です。
他の検証環境でスクリプト自体は正常に動作する事を確認しています。
他者がPerlで同様なスクリプトを作成しましたが、問題なく可動している事もあり
接続経路には問題がないのではないかと考えています。
```
Perlでは下記のモジュールを利用して問題なく接続が出来ます
use LWP::UserAgent
use HTTP::Request
use HTTP::Cookies
```
原因をつきとめる為に、これから何を調べればよいのか行き詰まっています。
原因の特定、問題解消のためにお知恵を貸して頂けないでしょうか。
### 発生している問題・エラーメッセージ
実行後、暫くしてから下記のメッセージが出力されてエラー終了します。
```
通常のエラーメッセージ(抜粋)
Traceback (most recent call last):
File "hoge.py", line 159, in <module>
 response = opener.open(hoge_url, data)
File "requests.py", line 532, in open
 response = meth(req, response)
File "requests.py", line 642, in http_response
 'http', request, response, code, msg, hdrs)
File "requests.py", line 564, in error
 result = self._call_chain(*args)
File "requests.py", line 504, in _call_chain
  result = func(*args)
File "requests.py", line 756, in http_error_302
 return self.parent.open(new, timeout=req.timeout)
File "requests.py", line 526, in open
 response = self._open(req, data)
File "requests.py", line 544, in _open
 '_open, req)
File "requests.py", line 504, in _call_chain
 result = func(*args)
File "requests.py", line 1361, in https_open
 context=self._context, check_hostname=self._check_hostname)
File "requests.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connectopn time out>
```
```
import backtrace を仕込んで出力したエラー内容を降順(抜粋)
756 request.py http_error_302 --> return self.parent.open(new, timeout=req.timeout)
504 request.py _call_chain --> = func(*args)
564 request.py error --> result = self._call_chain(*args)
642 request.py http response --> 'http', request, response, code, msg, hdrs)
532 request.py open --> response = meth(req, response)
160 request.py <module> --> response = opner.open(hoge_url, data)
```
### 該当のソースコード
```
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from urllib.request import build_opener, HTTPCookieProcessor
from urllib.parse import urlencode, parse_qs
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._craete_unverified_context
hoge_url = "https://hoge.co.jp/login"
encoding = " utf-8"
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
response.close()
```
### 試したこと
同じ実行環境でcurlコマンドを試すと、認証エラーのレスポンスが返ってくるので接続は可能な様子です。
python2で同じようなスクリプトを書いてみて試しましたが上記のエラーとなります。
エラー内容からリダイレクト?の影響でタイムアウトしていると考えたのですが
対話式で該当のサイトにgetリクエストした場合には200のレスポンスが返ってきます。
```
>>> import requests
>>> res = requests.get('https://hoge.co.jp/login')
>>> 200
```
```
### 少し見えてきたこと
該当のURLですが、requestsモジュールを使うとレスポンスが返って来ました。
```
import requests
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
hoge_url = "https://hoge.co.jp/login"
response = response.post(URL, data=post)
print(response.text)
```
Python初心者であるため、色々と検索して下記の手法を組んだのですが、
こちらはCookie認証が必要との情報を見かけて取り入れました。
```
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
```
上記とrequestsモジュールとの違いをきちんと理解できていませんが、
もし上記と同様なことをrequestsモジュールを使って出来るのであれば、きちんと
認証が通るのではないかと考えています。
equestsモジュールを使ったCookie認証のやり方をご存知の方がいらっしゃいましたら
ご教授頂けないでしょうか。
  • Python

    22144 questions

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

  • Python 3.x

    15320 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

3 エラーメッセージの修正

khaii21

khaii21 score 16

2018/06/02 09:44  投稿

Python3 スクレイピングでログイン出来ずタイムアウト?になる
### 前提・実現したいこと
Python 3です。
Cookie認証が必要となるサイトに対してスクレイピングのコードを書きました。
ポートが閉じているわけではないのですが、どうやらタイムアウトしている様子です。
他の検証環境でスクリプト自体は正常に動作する事を確認しています。
他者がPerlで同様なスクリプトを作成しましたが、問題なく可動している事もあり
接続経路には問題がないのではないかと考えています。
```
Perlでは下記のモジュールを利用して問題なく接続が出来ます
use LWP::UserAgent
use HTTP::Request
use HTTP::Cookies
```
原因をつきとめる為に、これから何を調べればよいのか行き詰まっています。
原因の特定、問題解消のためにお知恵を貸して頂けないでしょうか。
### 発生している問題・エラーメッセージ
実行後、暫くしてから下記のメッセージが出力されてエラー終了します。
```
通常のエラーメッセージ(抜粋)
Traceback (most recent call last):
File "hoge.py", line 159, in <module>
 response = opener.open(hoge_url, data)
File "requests.py", line 532, in open
 response = meth(req, response)
File "requests.py", line 642, in http_response
 'http', request, response, code, msg, hdrs)
File "requests.py", line 564, in error
 result = self._call_chain(*args)
File "requests.py", line 504, in _call_chain
  result = func(*args)
File "requests.py", line 756, in http_error_302
 return self.parent.open(new, timeout=req.timeout)
File "requests.py", line 526, in open
 response = self._open(req, data)
File "requests.py", line 544, in _open
 '_open, req)
File "requests.py", line 504, in _call_chain
 result = func(*args)
File "requests.py", line 1361, in https_open
 conteext=self._context, check_hostname=self._check_hostname)
 context=self._context, check_hostname=self._check_hostname)
File "requests.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connectopn time out>
```
```
import backtrace を仕込んで出力したエラー内容を降順(抜粋)
756 request.py http_error_302 --> return self.parent.open(new, timeout=req.timeout)
504 request.py _call_chain --> = func(*args)
564 request.py error --> result = self._call_chain(*args)
642 request.py http response --> 'http', request, response, code, msg, hdrs)
532 request.py open --> response = meth(req, response)
160 request.py <module> --> response = opner.open(hoge_url, data)
```
### 該当のソースコード
```
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from urllib.request import build_opener, HTTPCookieProcessor
from urllib.parse import urlencode, parse_qs
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._craete_unverified_context
hoge_url = "https://hoge.co.jp/login"
encoding = " utf-8"
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
response.close()
```
### 試したこと
同じ実行環境でcurlコマンドを試すと、認証エラーのレスポンスが返ってくるので接続は可能な様子です。
python2で同じようなスクリプトを書いてみて試しましたが上記のエラーとなります。
エラー内容からリダイレクト?の影響でタイムアウトしていると考えたのですが
対話式で該当のサイトにgetリクエストした場合には200のレスポンスが返ってきます。
```
>>> import requests
>>> res = requests.get('https://hoge.co.jp/login')
>>> 200
```
  • Python

    22144 questions

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

  • Python 3.x

    15320 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

2 エラーメッセージを追記

khaii21

khaii21 score 16

2018/06/02 09:38  投稿

Python3 スクレイピングでログイン出来ずタイムアウト?になる
### 前提・実現したいこと
Python 3です。
Cookie認証が必要となるサイトに対してスクレイピングのコードを書きました。
ポートが閉じているわけではないのですが、どうやらタイムアウトしている様子です。
他の検証環境でスクリプト自体は正常に動作する事を確認しています。
他者がPerlで同様なスクリプトを作成しましたが、問題なく可動している事もあり
接続経路には問題がないのではないかと考えています。
```
Perlでは下記のモジュールを利用して問題なく接続が出来ます
use LWP::UserAgent
use HTTP::Request
use HTTP::Cookies
```
原因をつきとめる為に、これから何を調べればよいのか行き詰まっています。
原因の特定、問題解消のためにお知恵を貸して頂けないでしょうか。
### 発生している問題・エラーメッセージ
実行後、暫くしてから下記のメッセージが出力されてエラー終了します。
```
通常のエラーメッセージ(抜粋)
Traceback (most recent call last):  
File "hoge.py", line 159, in <module>
 response = opener.open(hoge_url, data)
File "requests.py", line 532, in open
 response = meth(req, response)
File "requests.py", line 642, in http_response
 'http', request, response, code, msg, hdrs)
File "requests.py", line 564, in error
 result = self._call_chain(*args)
File "requests.py", line 504, in _call_chain
  result = func(*args)
File "requests.py", line 756, in http_error_302
 return self.parent.open(new, timeout=req.timeout)
File "requests.py", line 526, in open
 response = self._open(req, data)
File "requests.py", line 544, in _open
 '_open, req)
File "requests.py", line 504, in _call_chain
 result = func(*args)
File "requests.py", line 1361, in https_open
 conteext=self._context, check_hostname=self._check_hostname)
File "requests.py", line 1320, in do_open
raise URLError(err)
urllib.error.URLError: <urlopen error [Errno 110] Connectopn time out>
```
```
backtraceを仕込んで出力したエラー内容を降順(抜粋)
import backtrace を仕込んで出力したエラー内容を降順(抜粋)
756 request.py http_error_302 --> return self.parent.open(new, timeout=req.timeout)
504 request.py _call_chain --> = func(*args)
564 request.py error --> result = self._call_chain(*args)
642 request.py http response --> 'http', request, response, code, msg, hdrs)
532 request.py open --> response = meth(req, response)
160 request.py <module> --> response = opner.open(hoge_url, data)
```
### 該当のソースコード
```
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from urllib.request import build_opener, HTTPCookieProcessor
from urllib.parse import urlencode, parse_qs
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._craete_unverified_context
hoge_url = "https://hoge.co.jp/login"
encoding = " utf-8"
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
response.close()
```
### 試したこと
同じ実行環境でcurlコマンドを試すと、認証エラーのレスポンスが返ってくるので接続は可能な様子です。
python2で同じようなスクリプトを書いてみて試しましたが上記のエラーとなります。
エラー内容からリダイレクト?の影響でタイムアウトしていると考えたのですが
対話式で該当のサイトにgetリクエストした場合には200のレスポンスが返ってきます。
```
>>> import requests
>>> res = requests.get('https://hoge.co.jp/login')
>>> 200
```
  • Python

    22144 questions

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

  • Python 3.x

    15320 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1 エラーメッセージを追記

khaii21

khaii21 score 16

2018/06/02 09:36  投稿

Python3 スクレイピングでログイン出来ずタイムアウト?になる
### 前提・実現したいこと
Python 3です。
Cookie認証が必要となるサイトに対してスクレイピングのコードを書きました。
ポートが閉じているわけではないのですが、どうやらタイムアウトしている様子です。
他の検証環境でスクリプト自体は正常に動作する事を確認しています。
他者がPerlで同様なスクリプトを作成しましたが、問題なく可動している事もあり
接続経路には問題がないのではないかと考えています。
```
Perlでは下記のモジュールを利用して問題なく接続が出来ます
use LWP::UserAgent
use HTTP::Request
use HTTP::Cookies
```
原因をつきとめる為に、これから何を調べればよいのか行き詰まっています。
原因の特定、問題解消のためにお知恵を貸して頂けないでしょうか。
### 発生している問題・エラーメッセージ
実行後、暫くしてから下記のメッセージが出力されてエラー終了します。
```
通常のエラーメッセージ(抜粋)  
 
File "hoge.py", line 159, in <module>  
 response = opener.open(hoge_url, data)  
File "requests.py", line 532, in open  
 response = meth(req, response)  
File "requests.py", line 642, in http_response  
 'http', request, response, code, msg, hdrs)  
File "requests.py", line 564, in error  
 result = self._call_chain(*args)  
File "requests.py", line 504, in _call_chain  
  result = func(*args)  
File "requests.py", line 756, in http_error_302  
 return self.parent.open(new, timeout=req.timeout)  
File "requests.py", line 526, in open  
 response = self._open(req, data)  
File "requests.py", line 544, in _open  
 '_open, req)  
File "requests.py", line 504, in _call_chain  
 result = func(*args)  
File "requests.py", line 1361, in https_open  
 conteext=self._context, check_hostname=self._check_hostname)  
File "requests.py", line 1320, in do_open  
raise URLError(err)  
urllib.error.URLError: <urlopen error [Errno 110] Connectopn time out>  
```  
```  
backtraceを仕込んで出力したエラー内容を降順(抜粋)  
 
756 request.py http_error_302 --> return self.parent.open(new, timeout=req.timeout)
504 request.py _call_chain --> = func(*args)
564 request.py error --> result = self._call_chain(*args)
642 request.py http response --> 'http', request, response, code, msg, hdrs)
532 request.py open --> response = meth(req, response)
160 request.py <module> --> response = opner.open(hoge_url, data)
```
### 該当のソースコード
```
#!/usr/bin/python3
# -*- coding: utf-8 -*-
from urllib.request import build_opener, HTTPCookieProcessor
from urllib.parse import urlencode, parse_qs
from http.cookiejar import CookieJar
import ssl
ssl._create_default_https_context = ssl._craete_unverified_context
hoge_url = "https://hoge.co.jp/login"
encoding = " utf-8"
post = {
   "action": "login",
   "account": "アカウント"
   "password": "パスワード"
}
opener = build_opener(HTTPCookieProcessor((CookieJar()))
data = urlencode(post).encode(encoding)
response = opener.open(hoge_url, data)
response.close()
```
### 試したこと
同じ実行環境でcurlコマンドを試すと、認証エラーのレスポンスが返ってくるので接続は可能な様子です。
python2で同じようなスクリプトを書いてみて試しましたが上記のエラーとなります。
エラー内容からリダイレクト?の影響でタイムアウトしていると考えたのですが
対話式で該当のサイトにgetリクエストした場合には200のレスポンスが返ってきます。
```
>>> import requests
>>> res = requests.get('https://hoge.co.jp/login')
>>> 200
```
  • Python

    22144 questions

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

  • Python 3.x

    15320 questions

    Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る