-2
私はRyan MitchellによるPythonでWeb Scrapingという本から学びました。本には、ウェブサイトからの外部リンクを取得するコードがあります。私はそれが本の中にあるのと同じコードを使っているにしても(私が行った唯一の事は 'urllib.request'を 'urllib2'に変更していた)、私は同じエラーを受けています。 Pythonのバージョンは2.7.12です。スクリプトを使用してPythonで 'グローバル名が定義されていません'というエラーが発生する
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")
私はこの本のどのエディションを使用しているのか、このスニペットをコピーできたのか分かりませんが、コードの半分がありません。完全な例は[githubで利用可能]です(https://github.com/REMitchell/python-scraping/blob/master/chapter3/5-getAllExternalLinks.py)。 –