python - 为什么明明我可以访问的网站, urlopen却会报 404: Not Found
PHPz
PHPz 2017-04-18 09:40:11
0
5
533

有的说是因为代理.
我的浏览器倒是经常开着代理, 但是我已经关闭了.
我特意查看了下HTTP报文, 也都是没经过代理的.
但还是会出错.

代码:

import urllib.request

url = "http://news.dbanotes.net/"
req = urllib.request.Request(url)

page = urllib.request.urlopen(req).read().decode("UTF-8")
print(page)

python版本: 3.5.1

报错信息:
urllib.error.HTTPError: HTTP Error 404: Not Found

应该可以排除以下的问题:

  • 代理

  • 网络问题

  • url不存在

  • 代码有错

至于反爬虫这个我应该可能性也不大,
一来我试了很多个URL, 基本就是六四分, 有的能访问, 有的不能, 而且我们学校的官网那么, 我才不信他会...
二来我加了User-Agent的首部还是不能访问.

PHPz
PHPz

学习是最好的投资!

répondre à tous(5)
大家讲道理

Il n'y a aucun problème avec mon python 3.5.2 sous windows.
Il est recommandé de capturer le paquet et de le comparer avec la requête lors de l'accès par le navigateur.

Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 25 2016, 22:18:55) [MSC v.1900 64 bit (AMD64)] on win32
>>> 
>>> 
>>> 
>>> import urllib.request
>>> url = "http://news.dbanotes.net/"
>>> req = urllib.request.Request(url)
>>> page = urllib.request.urlopen(req).read()
>>> page
b'<html><head><link rel="stylesheet" type="text/css" href="http://news.dbanotes.net/news.css">\n<script type="text/javascript" src="http://news.dbanotes.net/jailbreak.js"></script>\n<link rel="shortcut icon" ...'
伊谢尔伦

Cela peut être lié à la valeur du paramètre de votre agent, car certains sites Web vérifieront cela pour empêcher les non-navigateurs d'explorer

巴扎黑

Vous copiez les en-têtes et les cookies du navigateur et les ajoutez à l'objet Request de l'urllib.
Navigateur simulé~~

Peter_Zhu

Une raison très importante est que l'en-tête d'agent que vous avez demandé dans votre programme a été bloqué par l'autre partie. Essayez de modifier l'en-tête d'agent.

阿神

Pas besoin d'utiliser Request, il suffit d'urlopen directement

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal