Python请求GET失败但CURL命令工作

时间:2018-05-20 15:00:00

标签: python curl python-requests

我正在尝试向网页发出get请求,但我使用带有requests包的Python2.7时出现了404错误。但是,使用CURL我得到一个成功的响应,它适用于浏览器。

的Python

r = requests.get('https://www.ynet.co.il/articles/07340L-446694800.html')
r.status_code
  404
r.headers
  {'backend-cache-control': '', 'Content-Length': '20661', 'WAI': '02',
  'X-me': '08', 'vg_id': '1', 'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding',
  'Last-Modified': 'Sun, 20 May 2018 01:20:04 GMT', 'Connection': 'keep-alive',
  'V-TTL': '47413', 'Date': 'Sun, 20 May 2018 14:55:21 GMT', 'VX-Cache': 'HIT',
  'Content-Type': 'text/html; charset=UTF-8', 'Accept-Ranges': 'bytes'}
r.reason
  'Not Found'

CURL

curl https://www.ynet.co.il/articles/07340L-446694800.html

2 个答案:

答案 0 :(得分:1)

代码是正确的,它适用于其他一些网站(请参阅https://repl.it/repls/MemorableUpbeatExams)。

此网站在浏览器中为我加载,因此我确认您的问题。

可能是他们阻止了Python请求,因为他们不希望他们的网站被机器人抓取和分析,但他们忘了阻止卷曲。

您正在做的事情可能违反www.ynet.co.il使用条款,您不应该这样做。

答案 1 :(得分:0)

在以下情况下显示404:

  1. URL不正确,响应实际上是准确的。
  2. 在URL中尾随空格
  3. 该网站可能不喜欢来自Python代码的HTTP(S)请求。通过添加“ www”来更改标题。您的引荐来源网址。

resp = requests.get(r'http://www.xx.xx.xx.xx/server/rest/line/125')

headers = {
       'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.95 Safari/537.36'
    }
result = requests.get('https://www.transfermarkt.co.uk', headers=headers)