2012-11-30 33 views
6

Tiêu đề khá nhiều nói lên tất cả. Dưới đây là mã của tôi:ValueError: loại url không xác định

from urllib2 import urlopen as getpage 
print = getpage("www.radioreference.com/apps/audio/?ctid=5586") 

và đây là lỗi traceback tôi nhận được:

Traceback (most recent call last): 
    File "C:/Users/**/Dropbox/Dev/ComServ/citetest.py", line 2, in <module> 
    contents = getpage("www.radioreference.com/apps/audio/?ctid=5586") 
    File "C:\Python25\lib\urllib2.py", line 121, in urlopen 
    return _opener.open(url, data) 
    File "C:\Python25\lib\urllib2.py", line 366, in open 
    protocol = req.get_type() 
    File "C:\Python25\lib\urllib2.py", line 241, in get_type 
    raise ValueError, "unknown url type: %s" % self.__original 
ValueError: unknown url type: www.radioreference.com/apps/audio/?ctid=5586 

đoán tốt nhất của tôi là urllib không thể lấy dữ liệu từ các URL php lộn xộn. nếu đây là trường hợp, có một công việc xung quanh? Nếu không, tôi đang làm gì sai?

+2

Thêm 'http: //' vào url. – iMom0

Trả lời

8

Trước tiên, bạn nên thêm 'http://' vào trước url. Ngoài ra, hãy làm không lưu kết quả trong print, dưới dạng nó ràng buộc tham chiếu đến đối tượng khác (không thể gọi).

Vì vậy, dòng này sẽ là:

page_contents = getpage("http://www.radioreference.com/apps/audio/?ctid=5586") 

này trả về một tập tin như đối tượng. Để đọc nội dung của nó, bạn cần sử dụng các phương pháp thao tác tệp khác nhau, như sau:

for line in page_contents.readlines(): 
    print line 
+0

Cảm ơn bạn. Không chỉ bạn trả lời câu hỏi của tôi, bạn đã trả lời câu hỏi tiếp theo của tôi! ;) – Jamus

+0

Tôi có lỗi tương tự và tôi đã tải xuống trang web bằng 'wget', làm cách nào tôi có thể mở? – hhh

3

Bạn cần phải vượt qua URL đầy đủ: nghĩa là phải bắt đầu bằng http://.

+0

Cảm ơn bạn, điều này đã giải quyết được nó :) – Jamus

2

Chỉ cần sử dụng http://www.radioreference.com/apps/audio/?ctid=5586 và nó sẽ hoạt động tốt.

In [24]: from urllib2 import urlopen as getpage 

In [26]: print getpage("http://www.radioreference.com/apps/audio/?ctid=5586") 
<addinfourl at 173987116 whose fp = <socket._fileobject object at 0xa5eb6ac>> 
Các vấn đề liên quan