Anju의 이미지를 yahoo에서 다운로드하십시오.

9948 단어 셀레늄Python3
마지막으로 Anju의 이미지를 DL했지만,
htps : // 이 m / 헤이를 rld2 / ms / 6008d5408 a 33d f 1 a 2 a 8
결국 잡힌 것은 썸네일이었고, 그럼 쇼보이므로, 여러가지 열심히 구글 이미지 검색의 원 이미지를 스크레이핑 하려고 했습니다만, 매우 곤란하다는 것을 알았습니다.

라고 하는 것으로, 약간 패배감도 있습니다만, 스크래핑이 아니라 화상 DL의 자동화에 방침을 전환해 트라이 해 봅니다.

slenium이라는 브라우저 조작을 자동화하는 편리한 툴이 있어 (당연과 같이) python 래퍼도 제공되고 있으므로 python로 구현합니다.

했던 일



yahoo의 이미지 검색에서 안주의 이미지를 150장 DL.

yahoo 이미지 검색은 구글 검색 화면과 달리 포토 플레이어 기능이 구현되어 있습니다. 이것을 selenium으로 두드리면 좋은 느낌으로 검색 결과 이미지를 열람할 수 있습니다.

코드의 주요 처리



picker = YahooImagePicker('アンジュ・カトリーナ', 150)
picker.jump()
for i, u in enumerate(picker.image_urls()):
    r = requests.get(u)
    with open(os.path.join(IMAGE_FOLDER, 'ange_{}.jpg'.format(i)), 'wb') as f:
       f.write(r.content)

이미지 선택기의 인스턴스 생성 (키워드 "안주", 매수 = 150)하여 첫 번째 이미지 이미지로 점프합니다.

후 이미지 DL => 다음 이미지로 점프 => 이미지 DL 반복입니다. 선택기의 image_urls 메소드는 yield 구현되어 있으므로 지정된 매수 분마다 매번 이미지 URL을 반환합니다.

선택기 클래스 구현


class YahooImagePicker:
    def __init__(self, keyword, count):
        self._keyword = keyword
        self._count = count
        self._driver = webdriver.Chrome()

    def jump(self):
        # yahooページへ遷移
        self._driver.get('http://yahoo.co.jp')

        # 検索キーワード入力/実行
        query = self._driver.find_element_by_name('p')
        query.send_keys(self._keyword)
        query.submit()
        time.sleep(3)

        # 画像リンクページへ遷移
        self._driver.find_element_by_link_text('画像').click()
        time.sleep(3)

        # 最初の画像イメージをクリック
        self._driver.find_element_by_tag_name('img').click()
        time.sleep(3)

    def image_urls(self):
        while True:
            # イメージリンク取得
            c = self._driver.find_element_by_id('imgContainer')
            c.find_element_by_id('imgInner')
            i = c.find_element_by_id('imgInner')
            i.find_element_by_tag_name('img')
            i2 = i.find_element_by_tag_name('img')
            i2.get_attribute('src')
            u = i2.get_attribute('src')

            # 次のイメージへ移動
            self._driver.find_element_by_class_name('next').click()
            time.sleep(3)

            print('count = {}'.format(self._count))
            self._count -= 1
            if self._count > 0:
                yield u
            else:
                return u

생성자에서 크롬 드라이버를 생성하고 jump 메소드로 첫 번째 이미지 페이지로 이동하여 image_urls로 이미지 URL을 가져옵니다. 어딘가에 들어있는 time.sleep은 selenium의 wait 기능을 사용하여 엄청나게 만들어야 하고, 이미지 링크의 추출은 더 적은 행으로 가능하다고 생각합니다만, 일단 움직였기 때문에 좋다고 합니다.



대량으로 앙쥬의 이미지가 모여 옵니다. selenium 굉장하다.



에뉴의 이미지가 섞이거나 하고 있는 것은 구글 AI의 한계입니까?
일부 DL에 실패한 파일도 있습니다. 이것들은 time.sleep라고 하는 베타 제어의 탓··이라고 생각합니다만, 어떨까.

모든 코드는 아래.
htps : // 기주 b. 이 m/모 g로도 w 응 py

좋은 웹페이지 즐겨찾기