我认为以下步骤是自我解释的,很简单。
但为什么Python requests
会在这种情况下崩溃。
似乎重定向可能是原因?
但是我可以正确访问chrome / firefox页面,
我怎么能得到我的结果?感谢
(Pdb) requests.get(req_url)
*** requests.exceptions.ConnectionError: ('Connection aborted.', ConnectionResetError(54, 'Connection reset by peer'))
(Pdb) req_url
'https://book.flypeach.com/default.aspx?chd=0&dep=2015-11-25&adt=1&des=OKA&langculture=zh-TW&ori=TPE&ao=B2CZHTW&bLFF=false&inf=0'
答案 0 :(得分:2)
一种简单的方法是表现得更像Firefox。 您可以分析Firefox与网页的对话方式 然后发送相同的标头。接受cookie 也很有用。
以下python 2.7.10代码成功读取页面:
#!/usr/bin/python
# -*- coding: latin-1 -*-
import urllib2
from cookielib import CookieJar
MyURL = 'https://book.flypeach.com/default.aspx?chd=0&dep=2015-11-25&adt=1&des=OKA&langculture=zh-TW&ori=TPE&ao=B2CZHTW&bLFF=false&inf=0'
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
opener.addheaders=[ ('User-Agent', r'Mozilla/5.0 (Windows NT 6.1; rv:34.0) Gecko/20100101 Firefox/34.0'),
('Accept', r'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8,text/vnd.wap.wml;q=0.6'),
('Accept-Language', 'de,en-US;q=0.7,en;q=0.3'),
('Accept-Encoding', 'deflate'),
('DNT', '1'),
('Referer', r'https://book.flypeach.com'),
('Host', 'book.flypeach.com'),
('Cache-Control', r'max-age=0'),
('Connection', r'keep-alive')
]
response = opener.open(MyURL)
html_result = response.read()
print html_result
答案 1 :(得分:0)
最后,我发现错误是由于openssl问题,
似乎我没有使用正确的openssl版本安装python 3.4.3。
所以我决定安装新的python版本3.5.0并使用正确的openssl路径。
CFLAGS="-I$(brew --prefix openssl)/include" \\
LDFLAGS="-L$(brew --prefix openssl)/lib" \\
pyenv install 3.5.0
并简单地添加了标记verify=False
resp = s.get(req_url, headers=self.headers, verify=False)
现在一切正常。