前提
あるサイトをスクレイピングしているのですが、その中で画像もダウンロードさせるような処理を入れたいのですが、img src="" のsrcの中身がxxx.jsp?key=atai となっているためダウンロード出来ません。
ダウンロードは不可能でしょうか?何か方法はありますか?
ちなみに出来れば、ダウンロードせずに画像認識させて読み取った文字を文字列としてcsvに書き込む処理をしたいです。
個別ではPCに手動で画像を保存したものを画像認識させて、文字列として返すことに成功しております。
実現したいこと
ここに実現したいことを箇条書きで書いてください。
- ▲▲機能を動作するようにする
発生している問題・エラーメッセージ
例外が発生しました: UnidentifiedImageError cannot identify image file <_io.BytesIO object at 0x0000023644506BB0>
該当のソースコード
python
1# 1.動的サイトにアクセス 2url = "https://www.xxx/aaa/page" 3driver.get(url) 4 5# クリック前のハンドルリスト 6handles_befor = driver.window_handles 7 8# ドロップダウンを選択する 9# 分類 10genres = driver.find_element(By.NAME,'searchCategory') 11select1 = Select(genres) 12all_options = select1.options 13count = len(all_options) 14 15 16# [検索]ボタン押す 17driver.find_element(By.ID,'search').click() 18# メーカー毎の商品リストをfor文で回しながら取得 19pages = driver.find_element(By.XPATH, '//*[@id="fm"]/div[2]/span[2]') 20# ページャー数分、回す 21pagenum = pages.text 22for num in range(int(pagenum)): 23 # tbodyの中身取得 24 tbody = driver.find_element(By.XPATH,'//*[@id="xxx_list"]/table/tbody') 25 trlist = tbody.find_elements(By.TAG_NAME,'tr') 26 27 trnum = str(1) 28 for tr in trlist: 29 tdlist = tr.find_elements(By.TAG_NAME,'td') 30 trtext = [] 31 for td in tdlist: 32 test = td.text 33 if(test == '選ぶ'): 34 break 35 trtext.append(test) 36 # 1アイテム毎にCSVに書き込む 37 filename = "xxx.csv" 38 with open(filename, mode="a", encoding="utf-8") as f: 39 trs = ','.join(trtext) 40 f.write(trs) 41 # 改行コード 42 f.write('\n') 43 time.sleep(2) 44 #[選ぶ]をクリック 45 imgxpath = '//*[@id="result_list"]/table/tbody/tr['+ trnum +']/td[5]/a' 46 driver.find_element(By.XPATH, imgxpath).click() 47 # 画像URL取得 48 img = driver.find_element(By.XPATH,'//*[@id="aaa"]/p/img') 49 src = img.get_attribute('src') 50 #imgurlをダウンロード 51 if src: 52 src = urljoin(url, src) 53 # 画像のバイト列取得 54 img_content = requests.get(src).content 55 # 画像に変換 56 img_file = io.BytesIO(img_content) 57 # 画像の表示 ここでエラー発生 58 img_open = Image.open(img_file) 59 # 画像の保存 60 img_open.save(f'{trnum}_{trtext[2]}.png') 61
試したこと
ここに問題に対して試したことを記載してください。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー