前提・実現したいこと
Pythonでサイトからのスクレイピングにチャレンジしています。
発生している問題・エラーメッセージ
pandasでdataframeを作成して、csvファイルに出力する際に勝手に改行されて、左側にスペースが空いてしまいます。
csv
1企業名,電話番号,メールアドレス,都道府県,市町村区,番地,URL,SSL証明書 2" 3 金太楼鮨 浅草中央店",050-5281-5483, , 東京都,台東区,浅草1‐17‐12,https://kintarou.owst.jp/,True 4" 5 祭ずし 大森店",050-5449-9694, , 東京都,大田区,大森北1‐2‐8,https://matsuriomori.owst.jp,True 6" 7 幸寿司",050-5831-5284, , 東京都,練馬区,練馬1‐20‐2 TKGビル1F, ,False 8" 9 時代寿司",03-3261-6550, , 東京都,千代田区,飯田橋1‐7‐5, ,False 10" 11 紀文寿司",050-5257-4691, , 東京都,台東区,浅草1-17-10, ,False 12" 13 寿司作",03-3758-4144, , 東京都,大田区,西嶺町9‐6 久が原台スカイマンション1F,http://www.facebook.com/#!/fumio.sugino?fref=ts,False 14" 15 新楽寿司",050-5257-2095, , 東京都,港区,新橋3-21-2タカラビル2F, ,False 16" 17 寿司貞",03-3241-6000, , 東京都,中央区,日本橋室町1-8-4, ,False 18" 19 いろは寿司",042-722-3850, , 東京都,町田市,原町田6-10-17, ,False 20" 21 栄寿司",03-3420-1371, , 東京都,世田谷区,世田谷1‐24‐3,http://home.u01.itscom.net/susi/,False 22" 23 柳寿司",050-5257-8121, , 東京都,豊島区,西池袋1-18-1 五光ビル1、2、3階,http://yanagizusi.owst.jp,False 24" 25 桜寿司",050-5861-7134, , 東京都,江戸川区,中葛西3-37-12, ,False 26" 27 健寿司",03-3731-3411, , 東京都,大田区,蒲田5-19-3, ,False 28" 29 太助寿司",050-5281-7108, , 東京都,台東区,松が谷2-26-6,http://tasuke-sushi.com/,False 30" 31 菊寿司",050-5355-1761, , 東京都,中央区,日本橋兜町17-1,http://www.kiku-sushi.com/,False 32" 33 金井寿司",050-5265-0390, , 東京都,品川区,東大井5-3-5, ,False 34" 35 寿司の磯松",03-6712-0343, , 東京都,港区,港南2-3-13 品川フロントビル2F, ,False 36" 37 司寿司",03-3688-2156, , 東京都,江戸川区,中葛西3-30-11,http://syokunin.jp/tsukasazushi/,False 38" 39 吉亀寿司",03-3351-0614, , 東京都,新宿区,富久町16-5,http://yoshikame.com/,False 40" 41 剣寿司",050-5815-5725, , 東京都,足立区,入谷4-10-24,http://www.kenzushi.net/,False 42" 43 寿司義",050-5265-8408, , 東京都,八王子市,大和田町2-17-7, ,False 44" 45 寿司銀",050-5257-0626, , 東京都,武蔵野市,吉祥寺南町4-3-13 井の頭サマリヤマンション1F,https://sushigin.owst.jp,True 46
該当のソースコード
python
1from types import new_class 2import requests 3from bs4 import BeautifulSoup 4import pandas as pd 5from time import sleep 6import re 7 8base_url = 'https://www.hotpepper.jp/SA11/fwt%E5%AF%BF%E5%8F%B8/bgn{}/' 9 10#base_urlを使って、トップページから順番にアクセス 11d_list = [] 12#1~2ページにアクセス 13for i in range(1,2): 14 print('='*30,i,'='*30) 15 url = base_url.format(i) 16 sleep(3) 17 res = requests.get(url,timeout=3) 18 soup = BeautifulSoup(res.content,'lxml') 19#企業の詳細ページにアクセス 20 a_tags = soup.select('h3.shopDetailStoreName > a') 21 for a_tag in a_tags: 22 page_url = 'https://www.hotpepper.jp/' + a_tag.get('href') 23 sleep(3) 24 page_res = requests.get(page_url,timeout=3) 25 page_soup = BeautifulSoup(page_res.content,'lxml') 26#格リストの情報を抽出 27 shop_name = page_soup.select_one('div.shopInner > div > table > tbody > tr > td').text 28 tel = page_soup.select_one('div.qualificationArea > div > span').text 29 mail = ' ' 30 address = page_soup.select_one('table.infoTable > tbody > tr:nth-of-type(2) > td > address').text 31 if address: 32 pat = '(...??[都道府県])((?:旭川|伊達|石狩|盛岡|奥州|田村|南相馬|那須塩原|東村山|武蔵村山|羽村|十日町|上越|富山|野々市|大町|蒲郡|四日市|姫路|大和郡山|廿日市|下>松|岩国|田川|大村|宮古|富良野|別府|佐伯|黒部|小諸|塩尻|玉野|周南)市|(?:余市|高市|[^市]{2,3}?)郡(?:玉村|大町|.{1,5}?)[町村]|(?:.{1,4}市)?[^町]{1,4}?区|.{1,7}?[市町村])(.+)' 33 34 address_list = re.split(pat,address) 35 pref = address_list[1] 36 city = address_list[2] 37 number_builing = address_list[3] 38 39 40 else: 41 pref = ' ' 42 city = ' ' 43 number = ' ' 44 building = ' ' 45 web_site = page_soup.select_one('div.shopInfoDetail > ul > li > a') 46 if web_site: 47 web_site = web_site.get('href') 48 else: 49 web_site = ' ' 50 if web_site: 51 if 'https' in web_site: 52 ssl = True 53 else: 54 ssl = False 55 56 d_list.append({ 57 '企業名':shop_name, 58 '電話番号':tel, 59 'メールアドレス':mail, 60 '都道府県':pref, 61 '市町村区':city, 62 '番地':number, 63 'URL':web_site, 64 'SSL証明書':ssl 65 }) 66#dataframe作成 67df = pd.DataFrame(d_list) 68df.to_csv('shop_list.csv',index=None,encoding='utf-8-sig')
補足情報(FW/ツールのバージョンなど)
解決策等ご教授頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/23 14:03