2014-04-15 2 views
0

이 오류의 의미를 모르겠습니다. 오류에 대한 조언이나 나머지 코드는 크게 감사하겠습니다.python - NameError 전역 이름 'buf'가 정의되어 있지 않습니다.

import urllib 
import urllib2 
import os 
import re 
from bs4 import BeautifulSoup 
def image_scrape(): 
    url = raw_input("Type url for image scrape: ") 
    content = urllib2.urlopen(url).read() 
    soup = BeautifulSoup(content) 
    name = 0 
    for tag in soup.find_all(re.compile("img")): 
     path = 'C:\Users\Sorcerer\Downloads' 
     name += 1 
     filename = name 
     file_path = "%s%s" % (path, filename) 
     downloaded_image = file(file_path, "wb") 
     downloaded_image.write(buf) 
     downloaded_image.close() 

image_scrape() 

답변

2

당신은 당신의 코드에 라인을 가지고 :

downloaded_image.write(buf) 

파이썬 인터프리터 코드에서 전에이 변수 buf을 보지 않았습니다. 그리고 따라서 오류. 코드의 나머지 부분에

생각 :

  • 당신이 줄을 무엇을하고 있는지 수행 할 os 모듈을 사용하는 것이 좋습니다 :이 같은

    file_path = "%s%s" % (path, filename) 
    

    :

    import os 
    path = os.path.normpath('C:\\Users\\Sorcerer\\Downloads') 
    file_path = os.path.join(path, name) 
    
  • 모든 이미지 링크를 찾으려고하는 것 같습니다. 페이지를 읽고 file_path이 참조하는 위치의 파일 시스템에 저장하려고합니다.

    import requests 
    r = requests.get(tag, stream=True) 
    if r.status_code == 200: 
        with open(name, 'wb') as f: 
         for chunk in r.iter_content(): 
          f.write(chunk) 
        f.close() 
    
+0

그래서 BUF을 정의하고 내가 필요하지 않은 경우 어떤 (나는에 .write 때문에 놓아야 어떻게) : 이미지에 대한 링크를 가정하면 변수 tag에, 이것은 당신이 무엇을 최소한 하나의 인수가 필요합니까? ps의 도움을 주셔서 감사합니다 – torchhound

+0

또한이 오류가 발생했습니다 : Traceback (최근 호출 마지막) : 파일 "C : \ Users \ Sorcerer \ programs \ img_scrape.py", 줄 20, image_scrape() 파일 C : \ Users \ Sorcerer \ programs \ img_scrape.py, image_scrape에 파일 경로 = os.path.join (경로, 파일 이름) 파일 "C : \ Python27 \ lib \ ntpath.py" 73, join in elif isabs (b) : 파일 "C : \ Python27 \ lib \ ntpath.py", 라인 57, isabs s = splitdrive (s) [1] 파일 "C : \ Python27 \ lib \ ntpath.py ", 줄 125, splitdrive에 p [1 : 2] == ':': TypeError : 'int'객체에 '__getitem__'속성이 없습니다 – torchhound

+0

@to rchhound 답변을 업데이트했습니다. 'normpath' 사용법을보십시오 – shaktimaan

관련 문제