【问题标题】:How do I get a response from this website?我如何得到这个网站的回复?
【发布时间】:2018-08-01 11:10:59
【问题描述】:

我的问题很简单,我想从以下网站获得回复: 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

这个网站确实在线并且可以正常工作,但是它给我的反应不是我所期望的。

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

【问题讨论】:

  • @9769953 我更新了帖子
  • 你可以使用requests包,但是你会得到相同的状态码,503;也不例外。来自服务器的随附响应文本(类似于 Rotemya 给出的建议),其中提到“请打开 JavaScript 并重新加载页面”。还提到了一个重定向,但这可能是javascript,它的响应代码不正确。

标签: python python-requests http-error


【解决方案1】:

我尝试使用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

【讨论】:

    【解决方案2】:

    用 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
    

    【讨论】:

    • 这个“有效”,从某种意义上说,你得到了一些输出;但输出顶部的状态行仍然是“HTTP/1.1 503 Service Temporarily Unavailable”。
    • 我想知道差异是否与地理位置有关。仍然看到 503,也适用于 https 版本。
    • 我没有完全按照我需要做的事情来解决这个问题。我知道 503 是响应,但是如果它只返回 503,我将如何从该站点抓取。该网站有效,但我不明白为什么它在我的代码中返回 503? @Rotemya
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 2018-06-01
    • 1970-01-01
    • 2021-07-25
    • 2020-05-02
    • 1970-01-01
    • 2019-12-05
    • 2016-03-28
    相关资源
    最近更新 更多