Python Web Grattage - urlopen erreur [Errno -2] Nom ou service qui n'est pas connu

Je suis en train d'extraire des données à partir de Civique Communes Apps lien de mon projet. Je suis en mesure d'obtenir les liens de la page dont j'ai besoin. Mais lorsque j'essaie d'ouvrir les liens que je reçois "urlopen erreur [Errno -2] Nom ou le service ne sait pas"

Le web scraping code python:

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)

J'obtiens l'erreur suivante:

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>

Dois-je prendre soin de quelque chose de précis, lorsque je joue urlopen? Parce que je ne vois pas de problème avec le site http liens que je reçois.

[modifier]
Sur la deuxième manche, j'ai l'erreur suivante:

 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)

Le code fonctionne très bien sur mon ami Mac, mais échoue dans mon ubuntu 12.04.

Aussi j'ai essayé d'exécuter le code dans scrapper wiki et il a terminé avec succès. Mais quelques les url étaient manquantes (par rapport à mac). Il y a aucune raison pour que ces comportements?

Quelle est la valeur de categorized_apps_url au moment de l'erreur?
Aussi, je sais que ce genre de commentaire est souvent considéré comme gênant, mais vous pouvez trouver la vie bien plus facile si vous utilisez httplib2 ou demande au lieu de urllib2. Ils offrent un ensemble plus complet de fonctionnalités pour travailler avec le protocole http.
Votre script fonctionne très bien à partir de mon ordinateur, comme il est. Je suis en cours d'exécution sur un Mac avec python 2.7 et il a essayé à la fois avec BeautifulSoup 3.2 et 4.0 et dans les deux cas, il renvoie une liste de 69 les liens principaux et 117 page suivante, liens. Je soupçonne que c'est quelque chose sur votre système de blocage de python. Avez-vous essayé le ping les urls directement? Peut-être que vous avez un logiciel antivirus qui bloque votre script?
Je ne suis pas en mesure de trouver un lien exact pour lequel je reçois le message d'erreur. Il se casse à des valeurs différentes. Et merci pour la suggestion. J'essaye seulement de mes mains au web grattage. Afin de vous commentaire est le bienvenu. 🙂
J'ai vérifié, et l'url de travail. Aussi j'ai essayé le même code dans l'ami de mon mac et ça fonctionne parfaitement. Est-il une raison pourquoi il ne parvient pas à mon Ubuntu 12.04 ?

OriginalL'auteur SyncMaster | 2012-07-23