python urllib 随机出现 HTTP 错误 405:

python urllib randomly appearing HTTP Error 405:

知识渊博的人您好,

我正在编写代码以从特定网站的某些子页面获取一些信息。

以下三行代码适用于 10 个案例中的大约 8 个(同时使用同样已发布的 link/URL)。但在十分之二的情况下,我收到错误 'HTTPError: HTTP Error 405: '.

我不知道为什么网页有时拒绝我的请求,有时不拒绝。 更重要的是:我如何重建此代码以确保在没有错误消息的情况下获得答案? (即使需要更多时间)

import urllib

link = 'https://www.immobilienscout24.de/expose/128433102?utm_medium=email&utm_source=system&utm_campaign=fulfillment_update&savedSearchId=116004747&immoTypeId=2&PID=113689187&referrer=ff_listing&utm_content=fulfillment_item#/'

f = urllib.request.urlopen(link)

HTTP 错误 405

405不允许的方法。很可能您在预期 POST 时发送 GET 请求,或者在预期 GET 时发送 POST 请求。

在没有错误消息的情况下确定得到答案? (即使需要更多时间)

您应该首先询问资源它支持什么方法。为此 OPTIONS 使用 HTTP 动词。收到回复后,您可以检查 headers(在 Allow 下)允许哪些方法并发送正确的请求。

使用urllib.request

发送OPTIONS的简单示例
import urllib.request
req_obj = urllib.request.Request("https://www.example.com",method="OPTIONS")
response = urllib.request.urlopen(req_obj)
print(response.headers['Allow'])

输出

OPTIONS, GET, HEAD, POST

同时我自己解决了:

  1. “尝试”中的请求
  2. 一个我为每个url写的字典,不管它是否有效
  3. 一个 while 循环,我在其中为 url 重复它,它在以前的时间里不起作用。
  4. 在没有 url 没有成功抓取网络后休息。
  5. 在此期间,我以我需要的方式转换数据。

可能不是什么特别的战术。

今天循环了9轮,17个链接全部被抓取。

我仍然很好奇失败的原因和直接的解决方案。但是我的解决方案毫无问题地得到了我想要的数据。