搜尋

首頁  >  問答  >  主體

python - 为什么明明我可以访问的网站, urlopen却会报 404: Not Found

有的说是因为代理.
我的浏览器倒是经常开着代理, 但是我已经关闭了.
我特意查看了下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, 基本就是六四分, 有的能访问, 有的不能, 而且我们学校的官网那么, 我才不信他会...
二来我加了User-Agent的首部还是不能访问.

PHPzPHPz2919 天前542

全部回覆(5)我來回復

  • 大家讲道理

    大家讲道理2017-04-18 09:42:11

    我這邊在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" ...'
    

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 09:42:11

    這個有可能是你的agent的設定值有關,因為有的網站會檢查這個,來防止非瀏覽器進行爬蟲

    回覆
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:42:11

    你把瀏覽器中的 headers 和 cookies 複製出來,加入到urllib的Request物件中。
    模擬瀏覽器~~

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-18 09:42:11

    很重要的一個原因,你程式中請求帶過去的agen頭被對方封了,換下agen頭試試吧。

    回覆
    0
  • 阿神

    阿神2017-04-18 09:42:11

    用不著Request 吧,直接urlopen呢

    回覆
    0
  • 取消回覆