인프런 커뮤니티 질문&답변

b1unique2222님의 프로필 이미지
b1unique2222

작성한 질문수

실습으로 끝장내는 웹 크롤링과 웹 페이지 자동화 & 실전 활용

파이썬으로 html 파일 업로드

강의잘듣고공부중입니다~^^작성중에 url 에 특정이미지를 크롤링하는걸 배웠는데도 에러가떠서 한수부탁드려요ㅜ

작성

·

401

·

수정됨

0

"""
dumpimages.py
    Downloads all the images on the supplied URL, and saves them to the
    specified output file ("/test/" by default)

Usage:
    python dumpimages.py https://www.1688.com// [output]
"""
from bs4 import BeautifulSoup as bs
from urllib.request import (
    urlopen, urlparse, urlunparse, urlretrieve)
import os
import sys

def main(url, out_folder="/test/"):
    """Downloads all the images at 'url' to /test/"""
    soup = bs(urlopen(url))
    parsed = list(urlparse(url))

    for image in soup.findAll("img"):
        print("Image: %(src)s" % image)
        filename = image["src"].split("/")[-1]
        parsed[2] = image["src"]
        outpath = os.path.join(out_folder, filename)
        if image["src"].lower().startswith("http"):
            urlretrieve(image["src"], outpath)
        else:
            urlretrieve(urlunparse(parsed), outpath)

def _usage():
    print("usage: python dumpimages.py http://example.com [outpath]")

if __name__ == "__main__":
    url = sys.argv[-1]
    out_folder = "/test/"
    if not url.lower().startswith("http"):
        out_folder = sys.argv[-1]
        url = sys.argv[-2]
        if not url.lower().startswith("http"):
            _usage()
            sys.exit(-1)
    main(url, out_folder)

root@goorm:/workspace/firstContainer# cd "/workspace/firstContainer";

root@goorm:/workspace/firstContainer# python3 /workspace/firstContainer/index.py

Traceback (most recent call last):

File "/workspace/firstContainer/index.py", line 38, in <module>

url = sys.argv[-2]

IndexError: list index out of range

 

구름ide로작성했는데 이렇게 오류가 떠요ㅠㅠ
전체이미지가 아닌 배웠던 class 특정영역의 이미지들만 일괄저장하고싶어서요;;ㅠ

답변 2

1

김플님의 프로필 이미지
김플
지식공유자

상세페이지의 이미지는 모두 desc-img-loaded라는 클래스가 있으니 이걸 찾으시면 됩니다.
b1unique2222님의 강의 진도율을 보니 아직 강의를 별로 안보셨더군요.
일단 진도를 좀 나가신다면 이정도는 아주 쉽게 해결하실겁니다.

b1unique2222님의 프로필 이미지
b1unique2222
질문자

감사감사드립니다

더더 공부한다음에 꼼꼼하게 질문할께요~

첨삭감사드려요 샘님

0

김플님의 프로필 이미지
김플
지식공유자

일단 에러는 sys.argv 리스트의 인덱스가 범위를 벗어나서 발생하는거니 sys.argv 리스트의 길이를 확인해보셔야 합니다.

그리고 class 특정영역의 이미지만 저장하고 싶다는 질문은 좀 더 자세히 해주시길 바랍니다.
제가 페이지가 어떤식으로 되어있는지, 어떤걸 어떤식으로 저장하고 싶다는건지 파악이 전혀 안되니 뭐라 답변드릴수가 없습니다.

b1unique2222님의 프로필 이미지
b1unique2222
질문자

네 회신 감사드립니다. 김플개발자님~
예를 들면 아래 크롤링이 허락된 사이트의 제품페이지의

https://detail.1688.com/offer/662657643311.html?spm=a26g8.27029026.2814782.37.19807bc45f2XAh&&scm=1007.41958.302057.0&pvid=5691880c-ecfe-4e84-8a4d-92b42ea86fc9&object_id=662657643311&udsPoolId=3492321&sk=consign&object_id=662657643311&object_type=offer&scm=1007.41958.302057.0&tpp_trace=213dd5cf16830611497332592d082b&pvid=5691880c-ecfe-4e84-8a4d-92b42ea86fc9&udsPoolId=3492321&resourceId=2814782&pageSize=10&pageNo=4&position=36

html의 <img class= 상세페이지 구간만 이미지들을 내컴에 1.jpg 2.jpg 3.jpg 로 저장하고싶은데 강의때 가르쳐주신 뷰티스프랑 페이지 url reguest 랑 하는데
너무 부족해서 ㅠㅠ 헤매고있습니다 김플샘님...ㅠ

 

b1unique2222님의 프로필 이미지
b1unique2222

작성한 질문수

질문하기