bilinmemektedir. İhtiyacım olan sayfanın bağlantılarını elde edebiliyorum. Ben bağlantıları açmaya çalıştığınızda Ama "urlopen hatası [Errno -2] Adı veya hizmet bilinmez" olsunPython Web Kazıma - urlopen hatası [Errno -2] Adı veya hizmet Projem için <a href="http://civiccommons.org/apps" rel="noreferrer">Civic Commons Apps</a> bağlantısından veri ayıklamak çalışıyorum
web kazıma piton kodu:
: aşağıdaki hatayı alıyorumfrom 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)
Ben urlopen gerçekleştirdiğinizde
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>
belirli bir şey dikkat çekmek gerekir mi? Çünkü aldığım http linkleri ile ilgili bir sorun görmüyorum.
[değiştir]
ikinci vadede ben şu hata var: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)
aynı kod arkadaşımın Mac iyi çalışır, ancak benim ubuntu 12.04 başarısız olur.
Ayrıca ben kavgacı wiki kod çalıştıran çalıştı ve başarıyla tamamladı. Ancak az sayıda url eksikti (mac ile karşılaştırıldığında). Bu davranış için herhangi bir sebep var mı?
hatasının noktasında 'categorized_apps_url' değeri nedir? – kojiro
Ayrıca, bu tür yorumların genellikle rahatsız edici kabul edildiğini biliyorum, ancak [httplib2] (http://code.google.com/p/httplib2/) veya [request] 'i kullanırsanız hayatı * çok daha kolay bulabilirsiniz (urllib2' yerine http://docs.python-requests.org/en/latest/index.html). Http ile çalışmak için daha eksiksiz özellikler sunarlar. – kojiro
Scriptiniz bilgisayarımdan olduğu gibi çalışıyor. Ben bir python 2.7 ile Mac üzerinde koşuyorum ve her ikisi de BeautifulSoup 3.2 ve 4.0 ile çalıştı ve her iki durumda da 69 ana bağlantı ve 117 sonraki sayfa bağlantıları listesini döndürür. Sisteminizde python'u engelleyen bir şey olduğundan şüpheleniyorum. Bu url'lere doğrudan ping yapmayı denediniz mi? Belki de betiğinizi engelleyen virüsten koruma yazılımı var mı? –