मैं अपने प्रोजेक्ट के लिए Civic Commons Apps लिंक से डेटा निकालने का प्रयास कर रहा हूं। मैं जिस पृष्ठ की आवश्यकता है उसके लिंक प्राप्त करने में सक्षम हूं। लेकिन जब मैं लिंक को खोलने का प्रयास मैं "urlopen त्रुटि [errno -2] नाम या सेवा ज्ञात नहीं"पायथन वेब स्क्रैपिंग - urlopen त्रुटि [Errno -2] नाम या सेवा ज्ञात नहीं है
वेब scraping अजगर कोड:
from bs4 import BeautifulSoup
from urlparse import urlparse, parse_qs
import re
import urllib2
import pdb
base_url = "http://civiccommons.org"
url = "http://civiccommons.org/apps"
page = urllib2.urlopen(url)
soup = BeautifulSoup(page.read())
list_of_links = []
for link_tag in soup.findAll('a', href=re.compile('^/civic-function.*')):
string_temp_link = base_url+link_tag.get('href')
list_of_links.append(string_temp_link)
list_of_links = list(set(list_of_links))
list_of_next_pages = []
for categorized_apps_url in list_of_links:
categorized_apps_page = urllib2.urlopen(categorized_apps_url)
categorized_apps_soup = BeautifulSoup(categorized_apps_page.read())
last_page_tag = categorized_apps_soup.find('a', title="Go to last page")
if last_page_tag:
last_page_url = base_url+last_page_tag.get('href')
index_value = last_page_url.find("page=") + 5
base_url_for_next_page = last_page_url[:index_value]
for pageno in xrange(0, int(parse_qs(urlparse(last_page_url).query)['page'][0]) + 1):
list_of_next_pages.append(base_url_for_next_page+str(pageno))
else:
list_of_next_pages.append(categorized_apps_url)
मैं निम्नलिखित त्रुटि मिलती है:
urllib2.urlopen(categorized_apps_url)
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open
raise URLError(err)
urllib2.URLError: <urlopen error [Errno -2] Name or service not known>
क्या मुझे urlopen निष्पादित करते समय विशिष्ट चीज़ों का ख्याल रखना चाहिए? क्योंकि मुझे प्राप्त होने वाले http लिंक के साथ कोई समस्या नहीं दिख रही है।
[संपादित करें] इसके दूसरे भाग पर मैं निम्नलिखित त्रुटि मिली:
File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 400, in open
response = self._open(req, data)
File "/usr/lib/python2.7/urllib2.py", line 418, in _open
'_open', req)
File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
result = func(*args)
File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
return self.do_open(httplib.HTTPConnection, req)
File "/usr/lib/python2.7/urllib2.py", line 1177, in do_open
raise URLError(err)
एक ही कोड मेरे दोस्त की मैक में ठीक चलाता है, लेकिन मेरी Ubuntu 12.04 में विफल रहता है।
इसके अलावा मैंने स्क्रैपर विकी में कोड चलाने की कोशिश की और यह सफलतापूर्वक समाप्त हो गया। लेकिन कुछ यूआरएल गायब थे (जब मैक की तुलना में)। क्या इन व्यवहारों के लिए कोई कारण है?
त्रुटि के बिंदु पर 'categorized_apps_url' का मूल्य क्या है? – kojiro
इसके अलावा, मुझे पता है कि इस तरह की टिप्पणी अक्सर परेशान माना जाता है, लेकिन यदि आप [httplib2] (http://code.google.com/p/httplib2/) या [अनुरोध] का उपयोग करते हैं तो आपको जीवन * अधिक * आसान मिल सकता है (http:// urocs.python-requests.org/en/latest/index.html) 'urllib2' के बजाय)। वे http के साथ काम करने के लिए सुविधाओं का एक और पूरा सेट प्रदान करते हैं। – kojiro
आपकी स्क्रिप्ट मेरे कंप्यूटर से ठीक है। मैं पाइथन 2.7 के साथ एक मैक पर चल रहा हूं और इसे सुंदर सूप 3.2 और 4.0 दोनों के साथ करने की कोशिश की और दोनों मामलों में यह 69 मुख्य लिंक और 117 अगले पृष्ठ लिंक की एक सूची लौटाता है। मुझे संदेह है कि यह आपके सिस्टम पर कुछ है जो अजगर को अवरुद्ध कर रहा है। क्या आपने उन यूआरएल को सीधे पिंग करने की कोशिश की है? शायद आपके पास एंटीवायरस सॉफ़्टवेयर है जो आपकी स्क्रिप्ट को अवरुद्ध कर रहा है? –