작성
·
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님의 강의 진도율을 보니 아직 강의를 별로 안보셨더군요.
일단 진도를 좀 나가신다면 이정도는 아주 쉽게 해결하실겁니다.
0
일단 에러는 sys.argv 리스트의 인덱스가 범위를 벗어나서 발생하는거니 sys.argv 리스트의 길이를 확인해보셔야 합니다.
그리고 class 특정영역의 이미지만 저장하고 싶다는 질문은 좀 더 자세히 해주시길 바랍니다.
제가 페이지가 어떤식으로 되어있는지, 어떤걸 어떤식으로 저장하고 싶다는건지 파악이 전혀 안되니 뭐라 답변드릴수가 없습니다.
네 회신 감사드립니다. 김플개발자님~
예를 들면 아래 크롤링이 허락된 사이트의 제품페이지의
html의 <img class= 상세페이지 구간만 이미지들을 내컴에 1.jpg 2.jpg 3.jpg 로 저장하고싶은데 강의때 가르쳐주신 뷰티스프랑 페이지 url reguest 랑 하는데
너무 부족해서 ㅠㅠ 헤매고있습니다 김플샘님...ㅠ
감사감사드립니다
더더 공부한다음에 꼼꼼하게 질문할께요~
첨삭감사드려요 샘님