2016-11-13 31 views
-2

我一直在从Ryan Mitchell的一本名为“Web Scraping with Python”的书中学习scrapy。本书中有一个代码可以从网站获取外部链接。尽管我使用的是与本书相同的代码(我唯一做的就是将'urllib.request'更改为'urllib2'),但我仍然得到相同的错误。 Python版本是2.7.12。 这是错误:在Python中使用scrapy获取'全局名称未定义'错误

File "test.py", line 28, in <module> 
getAllExternalLinks("http://www.oreilly.com") 
File "test.py", line 16, in getAllExternalLinks 
internalLinks = getInternalLinks(bsObj, splitAddress(siteUrl)[0]) 
NameError: global name 'getInternalLinks' is not defined 

这是我正在使用的代码。

from urllib2 import urlopen 
from urlparse import urlparse 
from bs4 import BeautifulSoup 
import re 
allExtLinks = set() 

allIntLinks = set() 

def getAllExternalLinks(siteUrl): 

    html = urlopen(siteUrl) 

    bsObj = BeautifulSoup(html) 

    internalLinks = getInternalLinks(bsObj,splitAddress(siteUrl)[0]) 

    externalLinks = getExternalLinks(bsObj,splitAddress(siteUrl)[0]) 

    for link in externalLinks: 

     if link not in allExtLinks: 

      allExtLinks.add(link) 

      print(link) 

    for link in internalLinks: 

     if link not in allIntLinks: 

      print("About to get link: "+link) 

      allIntLinks.add(link) 

      getAllExternalLinks(link) 

getAllExternalLinks("http://www.oreilly.com") 
+0

我不知道你正在使用哪本书的版本,或者你在哪里设法复制这段代码 - 但它缺少一半的代码。完整的例子是[在github上可用](https://github.com/REMitchell/python-scraping/blob/master/chapter3/5-getAllExternalLinks.py)。 –

回答

0

在编译之前仔细阅读示例代码。 看,代码中没有getInternalLinks()函数。

相关问题