2013-01-11 4 views
1

J'utilise le code ci-dessous pour gratter sur le contenu XFN de la page web http://ajaxian.com mais je suis Gatting l'erreur ci-dessous:urllib2.URLError: <error urlopen type url inconnue: c>

Traceback (most recent call last): File  "C:\Users\Somnath\workspace\us.chakra.social.web.microformat\src\microformats_xfn_scrape.py", line 40, in <module> 
page = urllib2.urlopen(URL) 
    File "C:\Python27\lib\urllib2.py", line 126, in urlopen 
return _opener.open(url, data, timeout) 
    File "C:\Python27\lib\urllib2.py", line 394, in open 
response = self._open(req, data) 
    File "C:\Python27\lib\urllib2.py", line 417, in _open 
'unknown_open', req) 
    File "C:\Python27\lib\urllib2.py", line 372, in _call_chain 
result = func(*args) 
    File "C:\Python27\lib\urllib2.py", line 1232, in unknown_open 
raise URLError('unknown url type: %s' % type) 
urllib2.URLError: <urlopen error unknown url type: c> 

Mon code est comme suit:

''' 
Created on Jan 11, 2013 

@author: Somnath 
''' 
# Scraping XFN content from a web page 
# -*-coding: utf-8 -*- 

import sys 
import urllib2 
import HTMLParser 
from BeautifulSoup import BeautifulSoup 

# Try http://ajaxian.com 
URL = sys.argv[0] 

XFN_TAGS = set([ 
      'colleague', 
      'sweetheart', 
      'parent', 
      'co-resident', 
      'co-worker', 
      'muse', 
      'neighbor', 
      'sibling', 
      'kin', 
      'child', 
      'date', 
      'spouse', 
      'me', 
      'acquaintance', 
      'met', 
      'crush', 
      'contact', 
      'friend', 
      ]) 


#try: 
page = urllib2.urlopen(URL) 
#except urllib2.URLError: 
# print 'Failed to fetch ' + item 

#try: 
soup = BeautifulSoup(page) 
#except HTMLParser.HTMLParseError: 
# print 'Failed to parse ' + item 

anchorTags = soup.findAll('a') 

for a in anchorTags: 
    if a.has_key('rel'): 
     if len(set(a['rel'].split()) & XFN_TAGS) > 0: 
      tags = a['rel'].split() 
      print a.contents[0], a['href'], tags 

Je courais PyDev sous Eclipse et utilise Exécuter en tant que -> Python Run et définir la configuration d'exécution avec l'argument "http://ajaxian.com/". Quelqu'un peut-il suggérer où je me trompe?

Encore une chose: je l'ai commenté les deux blocs try dans mon code parce qu'il donnait une erreur Undefined variable: item. Si je veux ré-inclure les blocs try-except, devrais-je donner une définition vide de variable, item en dehors des blocs try? Comment puis-je me débarrasser de ce problème?

+3

Imprimer sys.argv [ 0] et assurer son pas le nom du script lui-même, le cas échéant utiliser [1] –

+0

comment vous appelez le script? – Amyth

+0

@AlexK: URL d'impression m'a donné le nom du script comme suit: C: \ Users \ Somnath \ workspace \ us.chakra.social.web.microformat \ src \ microformats_xfn_scrape.py – somnathchakrabarti

Répondre

4

Comme vous suggère sys.argv[0] imprime le chemin de votre script, c'est parce que vous appelez votre script comme

python microformats_xfn‌​_scrape.py <some_argument> 

et ici l'index 0 de sys.argv est le nom du script et non l'argument.

Ce que vous devez faire est d'appeler votre script avec le paramètre <url>, comme:

python microformats_xfn‌​_scrape.py http://www.ajaxian.com/ 

et dans votre changement de script sys.argv[0]-sys.argv[1] comme indice des arguments url est 1.

Questions connexes