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

有的说是因为代理.
我的浏览器倒是经常开着代理, 但是我已经关闭了.
我特意查看了下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를 사용하면 문제가 없습니다.
패킷을 캡처하여 브라우저에서 액세스할 때 요청과 비교하는 것이 좋습니다.

으아악
伊谢尔伦

이는 에이전트의 설정 값과 관련이 있을 수 있습니다. 일부 웹사이트에서는 브라우저가 아닌 사용자가 크롤링하는 것을 방지하기 위해 이를 확인하기 때문입니다.

巴扎黑

브라우저에서 헤더와 쿠키를 복사하여 urllib의 요청 개체에 추가합니다.
시뮬레이션 브라우저~~

Peter_Zhu

매우 중요한 이유는 귀하가 프로그램에서 요청한 에이전트 헤더가 상대방에 의해 차단되었기 때문입니다. 에이전트 헤더를 변경해 보세요.

阿神

Request를 사용할 필요 없이 직접 urlopen을 사용하면 됩니다

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!