गुण: 'मॉड्यूल' ऑब्जेक्ट में कोई विशेषता नहीं है 'urlopen'


146

मैं एक वेबसाइट के HTML स्रोत कोड को डाउनलोड करने के लिए पायथन का उपयोग करने की कोशिश कर रहा हूं, लेकिन मुझे यह त्रुटि मिल रही है।

Traceback (most recent call last):  
    File "C:\Users\Sergio.Tapia\Documents\NetBeansProjects\DICParser\src\WebDownload.py", line 3, in <module>
     file = urllib.urlopen("http://www.python.org")
AttributeError: 'module' object has no attribute 'urlopen'

मैं यहां गाइड का अनुसरण कर रहा हूं: http://www.boddie.org.uk/python/HTML.html

import urllib

file = urllib.urlopen("http://www.python.org")
s = file.read()
f.close()

#I'm guessing this would output the html source code?
print(s)

मैं पायथन 3 का उपयोग कर रहा हूं।

जवाबों:


245

यह पायथन 2.x में काम करता है।

अजगर 3 के लिए डॉक्स में देखें :

import urllib.request

with urllib.request.urlopen("http://www.python.org") as url:
    s = url.read()
    # I'm guessing this would output the html source code ?
    print(s)

3
हाय यूमिरो, पायथन में 'विथ' स्टेटमेंट का उपयोग करते हुए मैं यह अनुमान लगा रहा हूं कि इसका उपयोग करने के बाद यह कनेक्शन अपने आप बंद हो जाता है? C # में उपयोग कथन के समान है?

@ शेरगियो: बिल्कुल! और इंडेंटेशन के माध्यम से आप देखते हैं कि आपकी फ़ाइल अभी भी कहाँ खोली गई है।
यूमरियो

नमस्कार @eumiro, मुझे "IndentationError: इंडेंटेड ब्लॉक" की त्रुटि है जब मैं टाइप करता हूं s = url.read(), तो क्या मैं पूछ सकता हूं कि मैं इसे कैसे हल कर सकता हूं? x
करेन चान

@KarenChan आपको पहले एक इंडेंट याद आ रहा है s=url.read(); क्या आपको इससे पहले 4 स्थान मिले हैं?
नंबरमान

19

एक अजगर 2 + 3 संगत समाधान है:

import sys

if sys.version_info[0] == 3:
    from urllib.request import urlopen
else:
    # Not Python 3 - today, it is most likely to be Python 2
    # But note that this might need an update when Python 4
    # might be around one day
    from urllib import urlopen


# Your code where you can use urlopen
with urlopen("http://www.python.org") as url:
    s = url.read()

print(s)

1
with urlopen("http://www.python.org") as url:के साथ python2 में काम नहीं करता है AttributeError: addinfourl instance has no attribute '__exit__'। लिखने की आवश्यकता हैurl = urlopen("http://www.python.org")
orshachar

15
import urllib.request as ur
s = ur.urlopen("http://www.google.com")
sl = s.read()
print(sl)

पायथन v3 में "urllib.request" अपने आप में एक मॉड्यूल है, इसलिए यहां "urllib" का उपयोग नहीं किया जा सकता है।


7

अजगर 3 में काम कर रहे ' dataX = urllib.urlopen (url) .read () ' पाने के लिए (यह अजगर 2 के लिए सही होगा ) आपको बस 2 छोटी चीजों को बदलना होगा।

1: स्वयं urllib स्टेटमेंट (बीच में .request जोड़ें):

dataX = urllib.request.urlopen(url).read()

2: आयात के बयान से पहले यह ('आयात urlib से परिवर्तन'):

import urllib.request

और यह python3 में काम करना चाहिए :)



1

अजगर 3 के लिए, कुछ इस तरह आज़माएँ:

import urllib.request
urllib.request.urlretrieve('http://crcv.ucf.edu/THUMOS14/UCF101/UCF101/v_YoYo_g19_c02.avi', "video_name.avi")

यह वीडियो को वर्तमान कार्यशील निर्देशिका में डाउनलोड करेगा

मुझे यहां से मदद मिली


1

Python3 के लिए समाधान:

from urllib.request import urlopen

url = 'http://www.python.org'
file = urlopen(url)
html = file.read()
print(html)

शुरुआती लोगों के लिए सरल और समझने में आसान। धन्यवाद
SHR

1

दो लाइनों को बदलें:

import urllib.request #line1

#Replace
urllib.urlopen("http://www.python.org")
#To
urllib.request.urlopen("http://www.python.org") #line2

यदि आपको ERROR 403 मिला है: निषिद्ध त्रुटि अपवाद यह कोशिश करें:

siteurl = "http://www.python.org"

req = urllib.request.Request(siteurl, headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.100 Safari/537.36'})
pageHTML = urllib.request.urlopen(req).read()

मुझे आशा है कि आपकी समस्या हल हो जाएगी।



0

आप के बीच संगत कोड बनाने के लिए छह मॉड्यूल का उपयोग करें को Python2 और python3

urllib.request.urlopen("<your-url>")```

आप इस तरह से छह मॉड्यूल आयात कर सकते हैं छह.moves से आयात urlib
रजत शुक्ला

0

आपका कोड python2.x में उपयोग किया जाता है, आप इस तरह का उपयोग कर सकते हैं:

from urllib.request import urlopen
urlopen(url)

वैसे, एक और मॉड्यूल requestsका उपयोग करने के लिए अधिक अनुकूल है, जिसे आप pipइसे स्थापित करने के लिए उपयोग कर सकते हैं , और इस तरह उपयोग करने का सुझाव देते हैं :

import requests
requests.get(url)
requests.post(url)

मुझे लगा कि इसे आसानी से इस्तेमाल किया जा सकता है, मैं भी शुरुआती हूं .... हाहाहा


-1
import urllib
import urllib.request
from bs4 import BeautifulSoup


with urllib.request.urlopen("http://www.newegg.com/") as url:
    s = url.read()
    print(s)
soup = BeautifulSoup(s, "html.parser")
all_tag_a = soup.find_all("a", limit=10)

for links in all_tag_a:
    #print(links.get('href'))
    print(links)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.