Je voulais collecter des images pour le Deep Learning, alors j'ai fini avec cet article. Cela n'a pas fonctionné parce que le contenu de la page Web avait changé, alors je l'ai réécrit.
image_download.py
import requests
import urllib.request
import time
import json
def scraping(url, max_page_num):
#Mise en œuvre de la pagénation
page_list = get_page_list(url, max_page_num)
#Obtenir la liste des URL des images
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):
#Accéder à la page des résultats de recherche
response = requests.get(url)
webtext = response.text
#Dans l'article original, j'ai utilisé la soupe Beatiful, mais je n'ai pas pu obtenir l'image, alors je l'ai changée.
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['imageSrc'] 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 #Si vous modifiez cela, le nombre de téléchargements changera.
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 = ["Kanna Hashimoto"] #Passez le mot que vous souhaitez rechercher dans une liste.
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)
#Téléchargement d'image
for i, src in enumerate(all_img_src_list):
download_img(src, f'./img/image_{num}_{i}.jpg') #Veuillez modifier la destination de sauvegarde de manière appropriée
if __name__ == '__main__':
main()
Si vous créez un dossier img et exécutez ce qui précède avec python, l'image sera enregistrée dans le dossier img. C'est l'image.
Soyez prudent car le scraping met une charge sur le serveur de l'autre partie!
J'ai essayé de collecter automatiquement des images de Kanna Hashimoto avec Python! !!
Recommended Posts