Blog Content

    티스토리 뷰

    구글 이미지 크롤링

    지금까지 크롤링을 찾아보며 두가지 방법을 찾아냈다.


    1. 이 코드는 이름을 수정하는것까지 되지만 html을 chrome브라우저를 통해 가져왔을때와 

       python을 통해 가져왔을때 차이가 있어서 이미지를 20개 밖에 만들지 못한다.


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    import requests
    import urllib.request
     
    from scrapy.selector import Selector
     
    count = 2000
    inputSearch = "증명사진"
    base_url = "https://www.google.co.kr/search?biw=1597&bih=925&" \
                 "tbm=isch&sa=1&btnG=%EA%B2%80%EC%83%89&q=" + inputSearch
     
     
    def img_url_from_page(url):
        html = requests.get(url).text  # r = requests.get(url); html = r.text
     
        sel = Selector(text=html)
     
        img_names = sel.css('td a img::attr(src)').extract()
     
        img_names = [img_name for img_name in img_names]
     
        return img_names
     
     
    def img_from_url(image_names):
        global count
        count += 1
        name = count
     
        full_name = "D:\images\img\profile_" + str(name) + ".jpg"
     
        urllib.request.urlretrieve(image_names, full_name)
     
     
    for i in img_url_from_page(base_url):
        img_from_url(i)
     
    cs



    2. 이 방법은 수백개의 이미지를 만들어내지만 아직까지 원하는 이름으로 저장하는법을 알아내지 못했다.

       따라서 이미지를 저장 후 이름을 변경하는 파이썬코드를 만들었다.


    1
    2
    3
    4
    5
    6
    7
    from icrawler.builtin import GoogleImageCrawler
     
    google_crawler = GoogleImageCrawler(parser_threads=2, downloader_threads=4,
                                        storage={'root_dir''your_image_dir'})
    google_crawler.crawl(keyword='sunny', max_num=1000,
                         date_min=None, date_max=None,
                         min_size=(200,200), max_size=None)
    cs


    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    import os
    import glob
     
    path = "D:\\change_name\\image\\*.jpg"
    fpath = "D:\\change_name\\image\\"
    count = 2155
     
    for path in glob.glob(path):
        img_name = "profile_" + str(count) + ".jpg"
        os.rename(path, fpath+img_name)
        count += 1
    cs


    Comments