Pythonを初めて数日の初心者で、プログラミングも勉強始めたばかりです。
最終的にWebスクレイピングができるようになりたいと思っています。
検索してもわからなく、つまづいているので詳しい方教えて下さいm(__)m
※Windows10のコマンドプロンプトから実行しています。
※Webスクレイピングの規約は確認しています。
★やりたいこと★
Webスクレイピングで取得した画像を指定のフォルダに保存したい。
■問題■
タグなどを取得しファイルに保存はできたのですが、ファイル形式はpngになっているのですが、エクセルファイルになっており、開くと文字化けした文字がバーッと書いてあります。どこをどう修正していいかわかりません。
■参考にしているサイト■
https://hashikake.com/scraping_img#source
★使用しているコード★
Python
1#●画像ファイルをダウンロードするための準備 2# ①-①.ライブラリをインポート 3import time 4import re 5import requests 6from pathlib import Path 7from bs4 import BeautifulSoup 8# ①-②.出力フォルダを作成 9output_folder = Path('C:\python\img') 10output_folder.mkdir(exist_ok=True) 11# ①-③.スクレイピングしたいURLを設定 12url = 'https://www.irasutoya.com/search?q=%E7%8C%AB' 13# ①-④.画像ページのURLを格納するリストを用意 14linklist = [] 15 16#●検索結果ページから画像のリンクを取り出す 17# ②-①.検索結果ページのhtmlを取得 18html = requests.get(url).text 19# ②-②.検索結果ページのオブジェクトを作成 20soup = BeautifulSoup(html, 'lxml') 21# ②-③.画像リンクのタグをすべて取得 22a_list =soup.select('div.boxmeta.clearfix > h2 > a') 23# ②-④.画像リンクを1つずつ取り出す 24for a in a_list: 25# ②-⑤.画像ページのURLを抽出 26 link_url = a.attrs['href'] 27# ②-⑥.画像ページのURLをリストに追加 28 linklist.append(link_url) 29 time.sleep(1.0) 30 31# ●各画像ページから画像ファイルのURLを特定 32# ③-①.画像ページのURLを1つずつ取り出す 33for page_url in linklist: 34# ③-②.画像ページのhtmlを取得 35 page_html = requests.get(page_url).text 36# ③-③.画像ページのオブジェクトを作成 37 page_soup = BeautifulSoup(page_html, "lxml") 38# ③-④.画像ファイルのタグをすべて取得 39 img_list = page_soup.select('div.entry > div > a > img') 40# ③-⑤.imgタグを1つずつ取り出す 41 for img in img_list: 42# ③-⑥.画像ファイルのURLを抽出 43 img_url = (img.attrs['src']) 44# ③-⑦.画像ファイルの名前を抽出 45 filename = re.search(".*/(.*png|.*jpg)$",img_url) 46# ③-⑧.保存先のファイルパスを生成 47 save_path = output_folder.joinpath(filename.group(1)) 48 time.sleep(1.0) 49# ●画像ファイルのURLからデータをダウンロード 50 try: 51# ④-①.画像ファイルのURLからデータを取得 52 image = requests.get(img_url) 53# ④-②.保存先のファイルパスにデータを保存 54 open(save_path, 'wb').write(image.content) 55# ④-③.保存したファイル名を表示 56 print(save_path) 57 time.sleep(1.0) 58 except ValueError: 59# ④-④.失敗した場合はエラー表示 60 print("ValueError!")
宜しくお願いしますm(__)m
回答2件
あなたの回答
tips
プレビュー