2016-11-13 1 views
-2

Ich habe Scrapy aus einem Buch namens Web Scraping mit Python von Ryan Mitchell gelernt. Es gibt einen Code im Buch, der externe Links von einer Website erhält. Obwohl ich den gleichen Code verwende wie im Buch (ich ändere nur 'urllib.request' in 'urllib2'), bekomme ich immer denselben Fehler. Python-Version ist 2.7.12. Dies ist der Fehler:Getting 'globalen Namen nicht definiert' Fehler in Python mit 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 

Dies ist der Code ich benutze.

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

Ich weiß nicht, welche Edition des Buchs Sie verwenden, oder wo Sie dieses Snippet kopieren konnten - aber es fehlt der halbe Code. Das vollständige Beispiel ist [verfügbar auf github] (https://github.com/REMitchell/python-scraping/blob/master/chapter3/5-getAllExternalLinks.py). –

Antwort

0

Lesen Sie den Beispielcode sorgfältig, bevor Sie ihn kompilieren. Schauen Sie, es gibt keine getInternalLinks() Funktion in Ihrem Code.

Verwandte Themen