我使用以下代码从网页http://ajaxian.com中删除XFN内容 但我得到未定义的变量错误:
我的代码如下:
'''
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
我的代码中有两个try块,它给出了一个错误未定义的变量:item。如果我想重新包含try-except块,我应该在try块外面给出变量的空白定义吗?
P.S:请注意,这是一本书后面的标准代码。而且我希望他们不会犯这样一个微不足道的错误。我在这里弄错了吗?
答案 0 :(得分:2)
假设您要打印无法加载的网址,请尝试将其更改为print 'Failed to fetch ' + URL
。你实际上并没有在任何地方定义item
,所以Python不知道你的意思:
try:
page = urllib2.urlopen(URL)
except urllib2.URLError:
print 'Failed to fetch ' + URL
在第二个区块中,也将item
更改为URL
(假设您要显示的错误显示的是网址而不是内容)。
try:
soup = BeautifulSoup(page)
except HTMLParser.HTMLParseError:
print 'Failed to parse ' + URL
答案 1 :(得分:2)
print 'Failed to fetch ' + item
项目不是定义任何地方。我想你想在那里打印URL。
变量必须在被使用之前被“定义”(赋值),否则将发生错误:
答案 2 :(得分:0)
您没有定义变量'item'。这就是导致错误的原因。您必须在使用之前定义变量。