あるDBからスクレイピングしてきた結果のCSVに¡が入ってしまい、これがどのようにしたら取れるのかがわからずにいます。
元のスクレイピングのどこを修正すべきでしょうか。
それとも、結果から削除できるかと思い、.replaceでやってみたのですが、できませんでした(安直な考えだったかもしれません・・)
もし知見がある方がいらっしゃったら、ご教授頂けると幸いです。
(結果のCSV)
0 2022/01/01 ¡¡¡¡01:00 ¡¡¡¡¡¡0.83
1 2022/01/01 ¡¡¡¡02:00 ¡¡¡¡¡¡0.83
2 2022/01/01 ¡¡¡¡03:00 ¡¡¡¡¡¡0.83
3 2022/01/01 ¡¡¡¡04:00 ¡¡¡¡¡¡0.83
4 2022/01/01 ¡¡¡¡05:00 ¡¡¡¡¡¡0.83
(元のスクレイピング)https://qiita.com/fftcy-sttkm/items/3d92d85c69669c44872c から考え方を拝借させて頂いています。
#ライブラリ import pandas as pd import csv import time from datetime import datetime from datetime import timedelta import requests from bs4 import BeautifulSoup #関数群 #時間を変換する関数 def time_tyconv(time): if isinstance(time,str):return datetime.strptime(time,'%Y%m%d') elif isinstance(time,datetime):return time.strftime("%Y%m%d") else:raise TypeError('type-err!') #日付からステップ数を算出する関数 def step_number(start_date, end_date): s = time_tyconv(start_date) e = time_tyconv(end_date) return int(((e-s).days + 1)//8) #●日後の日付データを求める関数 def date_after_days(time,days): day_after = time_tyconv(time) + timedelta(days=days) return time_tyconv(day_after) #任意期間のデータを水門水質DBからスクレイピングする関数 def scrp_DB(start_date, end_date, location_id,result_list): base_url = 'http://www1.river.go.jp' url = "http://www1.river.go.jp/cgi-bin/DspWaterData.exe" params = { "KIND":1, "ID":location_id, "BGNDATE":start_date, "ENDDATE":end_date, "KAWABOU":"NO" } #iframeのhtmlからsrcURLを取得 resp = requests.get(url,params=params) temp_soup = BeautifulSoup(resp.text,'html.parser') resp_iframe = requests.get(base_url+temp_soup.iframe['src']) #srcURLのhtmlを取得(iframe内) soup = BeautifulSoup(resp_iframe.text,'html.parser') soup = soup.select_one("table[border='0']") tr_list = soup.find_all("tr") tr_list.pop(0) for tr in tr_list: result_row = [] td_list = tr.find_all('td') for td in td_list: cell = td.get_text() result_row.append(cell) result_list.append(result_row) return result_list #Mainの処理 #取得期間、地点番号、保存ファイル名設定 start_date = "20220101" end_date = "20220131" csvfile_name = "result.csv" location_id = "308041288813010" n_step = step_number(start_date, end_date) result_list = [] for n in range(n_step): result_list = scrp_DB(start_date, date_after_days(start_date,7), location_id, result_list) start_date = date_after_days(start_date,8) time.sleep(2) result = scrp_DB(start_date, end_date,location_id,result_list) with open(csvfile_name, 'w') as file: writer = csv.writer(file, lineterminator='\n') writer.writerows(result)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/06/17 23:06