파이썬으로 이미지를 수집하는 방법
11033 단어 파이썬DeepLearning이미지 처리크롤링스크래핑
소개
Deep Learning용으로 이미지 수집하려고 하고, 이 기사 에 다가갔습니다만,
웹 페이지의 내용이 바뀌었는지 잘못되었으므로 다시 작성해 보았습니다.
코드
image_download.pyimport requests
import urllib.request
import time
import json
def scraping(url, max_page_num):
# ページネーション実装
page_list = get_page_list(url, max_page_num)
# 画像URLリスト取得
all_img_src_list = []
for page in page_list:
try:
img_src_list = get_img_src_list(page)
all_img_src_list.extend(img_src_list)
except:pass
return all_img_src_list
def get_img_src_list(url):
# 検索結果ページにアクセス
response = requests.get(url)
webtext = response.text
# 元の記事ではBeatifulsoupを使っていたのですが、画像が取れなかったので、変更しています。
start_word='<script>__NEXT_DATA__ = '
start_num = webtext.find(start_word)
webtext_start = webtext[start_num + len(start_word):]
end_word = ';__NEXT_LOADED_PAGES__='
end_num = webtext_start.find(end_word)
webtext_all = webtext_start[:end_num]
web_dic = json.loads(webtext_all)
img_src_list = [img['original']['url'] for img in web_dic["props"]["initialProps"]["pageProps"]["algos"]]
return img_src_list
def get_page_list(url, max_page_num):
img_num_per_page = 20 #ここを変えるとダウンロード数が変わります。
page_list = [f'{url}{i*img_num_per_page+1}' for i in range(max_page_num)]
return page_list
def download_img(src, dist_path):
time.sleep(1)
try:
with urllib.request.urlopen(src) as data:
img = data.read()
with open(dist_path, 'wb') as f:
f.write(img)
except:
pass
def main():
search_words = ["橋本環奈"] #検索したいワードをリストで渡します。
for num, search_word in enumerate(search_words):
url = f"https://search.yahoo.co.jp/image/search?p={search_word}&ei=UTF-8&b="
max_page_num = 20
all_img_src_list = scraping(url, max_page_num)
# 画像ダウンロード
for i, src in enumerate(all_img_src_list):
download_img(src, f'./img/image_{num}_{i}.jpg') #保存先は適当に変えてください
if __name__ == '__main__':
main()
img 폴더를 만들고 위를 python으로 실행하면 img 폴더에 이미지가 저장됩니다.
이런 이미지입니다.
스크래핑은 상대의 서버에 부하가 걸리므로 조심합시다!
수정
코멘트에 지적이 있었기 때문에, 코드를 1개소 변경했습니다.
수정 전: 화질이 나빠진다
img_src_list = [img['imageSrc'] for img in web_dic["props"]["initialProps"]
수정 후 : 좋은 화질의 이미지를 얻으려면 여기
img_src_list = [img['original']['url'] for img in web_dic["props"]["initialProps"]["pageProps"]["algos"]]
참고
파이썬으로 하시모토 칸나의 이미지를 자동 수집해 보았다! !
Reference
이 문제에 관하여(파이썬으로 이미지를 수집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kim_Burton/items/3862aace7dacbb87164a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
image_download.py
import requests
import urllib.request
import time
import json
def scraping(url, max_page_num):
# ページネーション実装
page_list = get_page_list(url, max_page_num)
# 画像URLリスト取得
all_img_src_list = []
for page in page_list:
try:
img_src_list = get_img_src_list(page)
all_img_src_list.extend(img_src_list)
except:pass
return all_img_src_list
def get_img_src_list(url):
# 検索結果ページにアクセス
response = requests.get(url)
webtext = response.text
# 元の記事ではBeatifulsoupを使っていたのですが、画像が取れなかったので、変更しています。
start_word='<script>__NEXT_DATA__ = '
start_num = webtext.find(start_word)
webtext_start = webtext[start_num + len(start_word):]
end_word = ';__NEXT_LOADED_PAGES__='
end_num = webtext_start.find(end_word)
webtext_all = webtext_start[:end_num]
web_dic = json.loads(webtext_all)
img_src_list = [img['original']['url'] for img in web_dic["props"]["initialProps"]["pageProps"]["algos"]]
return img_src_list
def get_page_list(url, max_page_num):
img_num_per_page = 20 #ここを変えるとダウンロード数が変わります。
page_list = [f'{url}{i*img_num_per_page+1}' for i in range(max_page_num)]
return page_list
def download_img(src, dist_path):
time.sleep(1)
try:
with urllib.request.urlopen(src) as data:
img = data.read()
with open(dist_path, 'wb') as f:
f.write(img)
except:
pass
def main():
search_words = ["橋本環奈"] #検索したいワードをリストで渡します。
for num, search_word in enumerate(search_words):
url = f"https://search.yahoo.co.jp/image/search?p={search_word}&ei=UTF-8&b="
max_page_num = 20
all_img_src_list = scraping(url, max_page_num)
# 画像ダウンロード
for i, src in enumerate(all_img_src_list):
download_img(src, f'./img/image_{num}_{i}.jpg') #保存先は適当に変えてください
if __name__ == '__main__':
main()
img 폴더를 만들고 위를 python으로 실행하면 img 폴더에 이미지가 저장됩니다.
이런 이미지입니다.
스크래핑은 상대의 서버에 부하가 걸리므로 조심합시다!
수정
코멘트에 지적이 있었기 때문에, 코드를 1개소 변경했습니다.
수정 전: 화질이 나빠진다
img_src_list = [img['imageSrc'] for img in web_dic["props"]["initialProps"]
수정 후 : 좋은 화질의 이미지를 얻으려면 여기
img_src_list = [img['original']['url'] for img in web_dic["props"]["initialProps"]["pageProps"]["algos"]]
참고
파이썬으로 하시모토 칸나의 이미지를 자동 수집해 보았다! !
Reference
이 문제에 관하여(파이썬으로 이미지를 수집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Kim_Burton/items/3862aace7dacbb87164a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(파이썬으로 이미지를 수집하는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Kim_Burton/items/3862aace7dacbb87164a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)