我从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")
答案 0 :(得分:0)
在编译之前仔细阅读示例代码。
看,您的代码中没有getInternalLinks()
函数。