Python訪問網頁報錯,ValueError: unknown url type,求問什麼原因?

import urllib.request

url = "//http://ww4.sinaimg.cn/mw600/006D2KSdjw1fbgxh52n43j30rs15owuq.jpg"

#url = "知乎 - 與世界分享你的知識、經驗和見解"

req = urllib.request.Request(url)

response = urllib.request.urlopen(req)

html = response.read().decode("utf-8")

print(html)

這一段代碼運行時,打開知乎沒問題,但是打開第一個網頁(沒注釋的)就會報錯:

Traceback (most recent call last):

File "C:/Users/acer/Desktop/MyPython/url_test.py", line 7, in &

req = urllib.request.Request(url)

File "C:UsersacerAppDataLocalProgramsPythonPython35liburllib
equest.py", line 269, in __init__

self.full_url = url

File "C:UsersacerAppDataLocalProgramsPythonPython35liburllib
equest.py", line 295, in full_url

self._parse()

File "C:UsersacerAppDataLocalProgramsPythonPython35liburllib
equest.py", line 324, in _parse

raise ValueError("unknown url type: %r" % self.full_url)

ValueError: unknown url type: "//http://ww4.sinaimg.cn/mw600/006D2KSdjw1fbgxh52n43j30rs15owuq.jpg"

看提示,應該未知url類型,但是這個網址我用Firefox和Chrome瀏覽器都能打開,所以不知道為什麼會報錯,對了Python版本是3.5.3rc1…… 另外,本人新手,剛學Python幾天


url地址必須是http://

或者 https:// 這樣才行啊


『:"被替換成了"%3A",不加url = urllib.parse.quote(url),報這樣的錯:

self._output(request.encode("ascii"))

UnicodeEncodeError: "ascii" codec can"t encode characters in position 192-196: ordinal not in range(128)

  • 參考文章(Python3 爬蟲編寫報錯及解決方法整理)和 (python3 URLError unknown url type http)使用urllib,加上url = urllib.parse.quote(url),就報下面的錯:

raise ValueError("unknown url type: %r" % self.full_url)

ValueError: unknown url type: "http%3A//autocomplete.h省略URL

這問題類似於(ValueError: unknown url type: #x27;url#x27;),然後大家有什麼見解嗎,因為爬取的url很長有特殊字元


知道原因了嗎同問


確實是缺少了『http:『,比較簡單的方法改成url = " "http:" + (這類unkonw url type)url ", 這是適用於爬取到了大量的unknown url type的url,如果只是爬取一個url的話,直接把網址改了就好了


推薦閱讀:

Python的from import和import的區別?
python有什麼類似特性(或者是解釋型語言特性)?
新手遇到笨辦法學python第13題?
Python中locale如何配置setlocale()的參數?
你看好 Python 3 嗎?

TAG:Python | Python3x | Python入門 | 網頁爬蟲 |