実現したいこと
求人サイトから、企業名、電話番号、住所を出力するコードを書いているのですが、求人の掲載期間終了により、出力結果がNoneとなった部分(except文のところ)も一つのインデックスとして使われ、csvファイルとして出力されるようにしたいです。
前提
出力結果が
720 ============================== 0 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000古賀', 'address': '福岡県古賀市今の庄2丁目15番10号', 'tell_number': '092-943-6677'} HTTP error occurred: 404 Client Error: Not Found for url: https://atsumaru.jp/area/detail?kno=X109214&said=7&shn=980&vol=00001 None ============================== 2 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000糸島', 'address': '福岡県糸島市荻浦5丁目10番1号', 'tell_number': '092-330-7700'} ============================== 3 ============================== {'company_name': '結婚成立所ベルバンク', 'address': '福岡市博多区博多駅東1丁目1−28 ウェル博多ビル9F', 'tell_number': '092-260-7033'} ============================== 4 ============================== {'company_name': '東海工業㈱\u3000大野城営業所', 'address': '大野城市仲畑3丁目11-8', 'tell_number': '0120-680-343'} ============================== 5 ============================== {'company_name': '株式会社 西原商店\u3000「イオンモール福岡出張所」', 'address': '福岡県糟屋郡粕屋町大字酒殿192-1(イオンモール福岡)', 'tell_number': '096-378-0657'} ============================== 6 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000糸島', 'address': '福岡県糸島市荻浦5丁目10番1号', 'tell_number': '092-330-7700'} ============================== 7 ============================== {'company_name': 'ベルバンク株式会社', 'address': '福岡県三潴郡大木町大角1615-3-101', 'tell_number': '090-2339-4659'} ============================== 8 ============================== {'company_name': 'ベルバンク株式会社', 'address': '広島県広島市南区京橋町7-18\u3000新井ビル303号', 'tell_number': '092-260-7033'} ============================== 9 ============================== {'company_name': 'ベルバンク株式会社', 'address': '福岡県福岡市博多区博多駅東1丁目1-28 ウェル博多ビル 9F', 'tell_number': '092-260-7033'} ============================== 10 ============================== {'company_name': '環境筑紫株式会社', 'address': '筑紫野市二日市北5丁目7番10号', 'tell_number': '092-919-8730'} ============================== 11 ============================== {'company_name': 'フロンタル株式会社', 'address': '福岡県糟屋郡須恵町佐谷995-1', 'tell_number': '092-692-8202'}
となるのですが、
============================== 0 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000古賀', 'address': '福岡県古賀市今の庄2丁目15番10号', 'tell_number': '092-943-6677'} HTTP error occurred: 404 Client Error: Not Found for url: https://atsumaru.jp/area/detail?kno=X109214&said=7&shn=980&vol=00001 None
の部分を、
============================== 0 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000古賀', 'address': '福岡県古賀市今の庄2丁目15番10号', 'tell_number': '092-943-6677'} ============================== 1 ============================== HTTP error occurred: 404 Client Error: Not Found for url: https://atsumaru.jp/area/detail?kno=X109214&said=7&shn=980&vol=00001 None
としたいです。
どのようにコードを修正すればできるでしょうか?
発生している問題・エラーメッセージ
エラーは発生していません。
該当のソースコード
Python
1#HTMLを読み込む 2with open('company_list.html', 'r') as f: 3 html = f.read() 4 5d_list = [] 6#HTMLを解析する 7soup = BeautifulSoup(html, 'lxml') 8 9 10cp_pages = soup.select('div#jobLists div#jobList.jobList > div h2 a') 11 12print(len(cp_pages)) 13for i, cp_page in enumerate(cp_pages): 14 company_name = cp_page.text#get cp_name 15 16 17 job_info_url = cp_page.get('href') if cp_pages else None 18 cp_page_url = 'https://atsumaru.jp' + job_info_url # 求人詳細ページのurl取得 19 20 try: 21 22 page_r = requests.get(cp_page_url) 23 page_r.raise_for_status() 24 page_soup = BeautifulSoup(page_r.content, 'lxml') 25 26 27 addresses = page_soup.select('div.bl_card2_table.bl_card2_table__wide th:-soup-contains("住所")') 28 addresses = page_soup.select('tr:has(th:-soup-contains("住所")) td p:first-child') 29 for address in addresses: 30 address_s = address.text 31 32 tell_nums = page_soup.select('div.telNo a') 33 for tell_num in tell_nums: 34 tell_number = tell_num.text 35 36 d_list.append({ 37 'company_name':cp_page.text, 38 'address':address.text, 39 'tell_number':tell_num.text 40 }) 41 print('='*30, i, '='*30) 42 print(d_list[-1]) 43 44 if i > 10: 45 break 46 47 except requests.exceptions.HTTPError as err: 48 print(f'HTTP error occurred: {err}') # Not Found, etc. 49 print('None') 50 51df = pd.DataFrame(d_list) 52df.to_csv('atsumaru_company_list.csv', index=None, encoding='utf-8-sig') 53
試したこと
except requests.exceptions.HTTPError as err: print(f'HTTP error occurred: {err}') # Not Found, etc. print('None')
のprint('None')の下に、print('='*30, i, '='*30)を記載したが
============================== 0 ============================== {'company_name': '住宅型有料老人ホーム\u3000いこいの里\u3000古賀', 'address': '福岡県古賀市今の庄2丁目15番10号', 'tell_number': '092-943-6677'} HTTP error occurred: 404 Client Error: Not Found for url: https://atsumaru.jp/area/detail?kno=X109214&said=7&shn=980&vol=00001 None ============================== 1 ==============================
となった。
補足情報(FW/ツールのバージョンなど)
Pythonのバージョン:3.10.9
使用PC:Intel MacBook
バージョン:macOS Monterey Version 12.4
実装環境:Jupyter Lab
Chromeのバージョン:112.0.5615.137
ChromeDriverのバージョン:112.0.5615.49
selenium 4.9.0
回答1件
あなたの回答
tips
プレビュー