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

有的说是因为代理.
我的浏览器倒是经常开着代理, 但是我已经关闭了.
我特意查看了下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

学习是最好的投资!

全部回复(5)
大家讲道理

我这边在windows下的python 3.5.2是没有问题的。
建议你抓包比较一下和浏览器访问时请求有什么不同。

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" ...'
伊谢尔伦

这个有可能是你的agent的设置值有关,因为有的网站会检查这个,来防止非浏览器进行爬虫

巴扎黑

你把浏览器中的 headers 和 cookies 复制出来,添加到urllib的Request对象中。
模拟浏览器~~

Peter_Zhu

很重要的一个原因,你程序中请求带过去的agen头被对方封了,换下agen头试试吧。

阿神

用不着Request 吧,直接urlopen呢

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!