[英]Unknown url type error in urllib2
我在 SO 上搜索了很多類似的問題,但沒有找到與我的案例完全匹配的問題。
我正在嘗試使用 python 2.7 下載視頻
這是我下載視頻的代碼
import urllib2
from bs4 import BeautifulSoup as bs
with open('video.txt','r') as f:
last_downloaded_video = f.read()
webpage = urllib2.urlopen('http://*.net/watch/**-'+last_downloaded_video)
soup = bs(webpage)
a = []
for link in soup.find_all('a'):
if link.has_attr('data-video-id'):
a.append(link)
#try just with first data-video-id
id = a[0]['data-video-id']
webpage2 = urllib2.urlopen('http://*/video/play/'+id)
soup = bs(webpage2)
string = str(soup.find_all('script')[2])
print string
url = string.split(': ')[1].split(',')[0]
url = url.replace('"','')
print url
print type(url)
video = urllib2.urlopen(url).read()
filename = "video.mp4"
with open(filename,'wb') as f:
f.write(video)
此代碼給出了一個未知的 url 類型錯誤。 回溯是
Traceback (most recent call last):
File "naruto.py", line 26, in <module>
video = urllib2.urlopen(url).read()
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 404, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 427, in _open
'unknown_open', req)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1247, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: 'http>
但是,當我將相同的 url 存儲在一個變量中並嘗試從終端下載它時,沒有顯示錯誤。 我對問題是什么感到困惑。 我在 python 郵件列表中遇到了類似的問題
如果沒有看到您正在抓取的頁面中的 HTML,很難判斷,但是,URL 開頭的一個雜散的'
(單引號)字符可能是原因 - 這會導致相同的異常:
>>> import urllib2
>>> urllib2.urlopen("'http://blah.com")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "urllib2.py", line 404, in open
response = self._open(req, data)
File "urllib2.py", line 427, in _open
'unknown_open', req)
File "urllib2.py", line 382, in _call_chain
result = func(*args)
File "urllib2.py", line 1249, in unknown_open
raise URLError('unknown url type: %s' % type)
urllib2.URLError: <urlopen error unknown url type: 'http>
因此,請嘗試清理您的 URL 並刪除任何雜散的引號。
OP反饋后更新:
打印語句的結果表明 URL 在 URL 字符串的開頭和結尾都有一個單引號字符。 不應該有任何類型的,當它被傳遞給周圍的URL任何引號urlopen()
您可以使用以下命令從 URL 字符串中刪除前導和尾隨引號(單引號和雙引號):
url = url.strip('\'"')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.