我如何从这个网站得到回应?

How do I get a response from this website?

我的问题很简单,我想从以下网站得到回复: http://www.pulsant.com

我只是想检查是否存在重定向,为此我使用了以下代码:

import urllib.request as Request
import urllib.parse
url = 'http://www.pulsant.com'
user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
values = {'name': 'Michael Foord',
          'location': 'Northampton',
          'language': 'Python' }
headers = {'User-Agent': user_agent}

data = urllib.parse.urlencode(values).encode("utf-8")
debug_requests_on()
req = Request.Request(url, data, headers)
response = Request.urlopen(req)
the_page = response.read()

此代码适用于很多网站,但偶尔会有少数网站无法使用,因为我收到了以下回复:

HTTPError: HTTP Error 503: Service Temporarily Unavailable

这个网站肯定是在线和工作的,但是它给我的反应不是我所期望的。

我试过欺骗我的用户代理和发送请求的不同方法,但我终究无法弄清楚如何从该网站获得响应。

用 curl 试试(对我有用):

 curl -i -H -L www.pulsant.com

或者如果你想要 https:

 curl -i -H -L https://www.pulsant.com

或(与https://不同)

curl -i -H -L www.pulsant.com:443

响应与您描述的不同:

HTTP/1.1 301 Moved Permanently
Date: Wed, 01 Aug 2018 12:30:13 GMT
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: max-age=3600
Expires: Wed, 01 Aug 2018 13:30:13 GMT
Location: https://www.pulsant.com/
Server: cloudflare
CF-RAY: 4438509685966b7f-LHR

我尝试使用 requests 模块来获得响应,并且成功了。如果这对您不起作用,该网站可能有一些 GeoIP 阻止或其他机制:

import requests
from bs4 import BeautifulSoup

r = requests.get('http://www.pulsant.com')
soup = BeautifulSoup(r.text, 'lxml')

print(soup.title.text)
print(soup.h1.text)

打印:

Hybrid IT & Managed Cloud Hosting Solutions | Pulsant

Experts in compliant business cloud platforms