获取全局名称未定义'使用scrapy的Python中的错误

时间:2016-11-13 04:36:57

标签: python-2.7 web-scraping scrapy web-crawler scrapy-spider

我从Ryan Mitchell的一本名为Web Scraping with Python的书中学习scrapy。书中有一个代码可以从网站获取外部链接。即使我使用了与书中相同的代码(我唯一要做的就是改变' urllib.request'到' urllib2'),我保持得到同样的错误。 Python版本是2.7.12。 这是错误:

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")

1 个答案:

答案 0 :(得分:0)

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