iT邦幫忙

6

找 Python 顧問

如果違反板規請刪除 謝謝
我現在上補習班 300 小時大數據課程 , 9 / 24 就結業了
我們小組 6 人做 UBIKE 資料分析 , 上課學習跟實際應用到專題上
還是有些地方不會 , 所以想要請教 , 就像下面這個程式
可以幫我看看寫的註解那裏不對 , 還有回答問題 , 顧問算月的
回答問題就用 LINE 或 MAIL , 請告知多少錢願意當我顧問 . 謝謝 !

import datetime as dt #將函數 datetime 指定給 dt
import requests,time,pathlib,os,re 

#######################################################################
#自訂函式區
def get_url_filename(arg): #取得網頁檔案
	return re.sub(r'^.*?station=(.*?)&stname=&datepicker=(.*?)$',r'\2_\1',arg)
  #返回用於替換字符串中的匹配項。這是什麼意思
def log(arg): 
#返回 x 的自然对数,要解析的命令行參數列表。這是什麼意思
	with open('log\\event.log','a',encoding='utf-8') as f: #打開event.log 'a'新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 utf-8 中文編碼
		f.writelines(arg+'\n') #寫入行並換行
	f.close()  #f是代表 file 嗎 ? 關檔

#######################################################################

base_dir = os.path.dirname(os.path.realpath(__file__))
#判斷log資料夾是否存在,若不存在則建立log資料夾
pathlib.Path(base_dir+"\\log\\").mkdir(parents=True, exist_ok=True)

with open('log\\event.log','w',encoding='utf-8') as f:
	pass #這裡用意是把event.log內容清空
f.close()

location_dict={'466910':'鞍部','466920':'臺北','466930':'竹子湖','C0A980':'社子','C0A9A0':'大直','C0A9B0':'石牌','C0A9C0':'天母','C0A9E0':'士林','C0A9F0':'內湖','C0AC40':'大屯山','C0AC70':'信義','C0AC80':'文山','C0AH40':'平等','C0AH70':'松山','C1AC50':'關渡','C1A730':'公館','C0A9G0':'南港','C0A990':'大崙尾山'}
#print(location_dict.keys()) 測試列出location_dict所有key:466910,466920...

startdate = dt.datetime(2019, 8,1)
enddate = dt.datetime(2019, 8,1)
totaldate = (enddate - startdate).days + 1

data_folder='HTML_DATA'
#判斷HTML_DATA資料夾是否存在,若不存在則建立HTML_DATA資料夾
pathlib.Path(data_folder).mkdir(parents=True, exist_ok=True)

#######################################################################
#下載全部html資料到HTML_DATA資料夾
for daynumber in range(totaldate): #迴圈 日期數目在全部日期的範圍內
	datestring = str((startdate + dt.timedelta(days = daynumber)).date())
    #將日期轉換為字串
	print(datestring)
	#取得單日_全部地點.htm
	for i in location_dict.keys(): # 迴圈 i 從監測站起點到終點下載資料
		url="https://e-service.cwb.gov.tw/HistoryDataQuery/DayDataController.do?command=viewMain&station=%s&stname=&datepicker=%s" %(i.split("_")[0],datestring)
		#print(url)
try: #異常狀況處裡 ,避免當機產生  r=requests.get(url) 為什麼要設定 r 變數 , 後面沒有引用 r
			print("Download: "+datestring+"_"+i+".htm") #列印下載日期 , 當 i 迴圈中斷的地方
			with open(data_folder+"\\"+datestring+"_"+i+".htm",'w',encoding='utf-8') as f:
                #打開檔案目錄與日期在 i 迴圈
				f.write(r.text) #寫入 r.text 檔案
			f.close() # 關閉		
except:
			print("Error: "+datestring+"_"+i+".htm")
			#列印錯誤日期在迴圈 i 的何處停止
log(url)
    finally:
			time.sleep(5)
print("1. HTML資料下載完畢.")

#######################################################################
#檢查event.log是否為空或有內容,有則表示有資料下載失敗需要重新下載
log_file = (open("log\\event.log", "r"))
download_error_url = log_file.read().split('\n')
log_file.close()
#若download_error_url陣列長度為1時表示是沒有錯誤(只有一列空白行)
#大於1表示有下載錯誤的記錄
if (len(download_error_url))>1:  #假如下載錯誤網址長度>1
	with open('log\\event.log','w',encoding='utf-8') as f:
		pass #這裡用意是把event.log內容清空
	f.close()
	for i in download_error_url: # 迴圈 i 在 下載錯誤網址
		if i!='': #假如 i 不等於空白
			try: # 異常處理同上
				r=requests.get(i)
				print("Download: "+get_url_filename(i)+".htm")
				with open(data_folder+"\\"+get_url_filename(i)+".htm",'w',encoding='utf-8') as f:
					f.write(r.text)
				f.close()
			except:
				print("Error: "+get_url_filename(i)+".htm")
				log(i)
			finally:
				time.sleep(5)
	print("2. 下載錯誤HTML資料補下載完畢.")
else:
	print("2. 檢查完畢,無下載錯誤HTML資料.")
看更多先前的討論...收起先前的討論...
你的「顧問」跟我想像的「顧問」一定是完全不一樣的「顧問」。
重點是,也沒說出要請多少錢。

如果依照上面所說的需求。這已經不是「顧問」而是家教了。
一般家教是依鐘點計費的。最便宜的家教,一小時最少也要1000。
而且依程式介來說。是依小時為一單位。不是依教的時間為主。

也就是如果只有一個問題,回答了10分而已。也是得依一小時計費。
如果能接受這樣的報價。我可能還會考慮一下。(只是考慮而已,詳細還得看實際需求)
ckp6250 iT邦新手 5 級 ‧ 2019-09-09 12:01:53 檢舉
【一小時最少也要1000】不符行情,太低廉了。
廿多年前,DOS 轉 Windows時 ,我請了一個家教,一小時就1500了。
事隔這麼多年,應該會漲一些吧?
因為我說的是最便宜的家教。
如果是學生打工的話。的確是有可能會開這樣的價格。

但重點是,也要人家肯開這樣的價格。
像我,真要1000我也不幹就是了。
與其花錢找顧問,不如問Google !
或者在這(IT邦幫忙)也能尋求解答,
不然自己買書...很多管道啊!
現在知識媒體那麼發達!隨便找也有
D_L iT邦新手 5 級 ‧ 2019-09-10 09:49:03 檢舉
我還以為是需要推薦專案使用套件的那種顧問
像樓上說的你可以找家教,其實費用不貴
這種難度的問題有學過的學生也可以解釋給你聽費用500、1000就有了
不過這種難度你要請有經驗的工程師當家教,費用1500、2000起跳了
11
froce
iT邦大師 5 級 ‧ 2019-09-09 07:04:30
最佳解答
def get_url_filename(arg): #取得網頁檔案
	return re.sub(r'^.*?station=(.*?)&stname=&datepicker=(.*?)$',r'\2_\1',arg)
  #返回用於替換字符串中的匹配項。這是什麼意思

正則表示法。
https://zwindr.blogspot.com/2016/01/python-regular-expression.html

def log(arg): 
#返回 x 的自然对数,要解析的命令行參數列表。這是什麼意思
	with open('log\\event.log','a',encoding='utf-8') as f: #打開event.log 'a'新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。 utf-8 中文編碼
		f.writelines(arg+'\n') #寫入行並換行
    f.close()  #f是代表 file 嗎 ? 關檔

ㄜ,筆記抄到晃神嗎?這個log函數是代表記錄的log,不是對數。

with open('log\\event.log','a',encoding='utf-8') as f:
    f.writelines(arg+'\n')
    f.close()

注意到with那行了嗎?有個as f,也就是把open那邊傳回來的值存入f這個變數。
這個變數只會存在這個區塊,你縮排錯誤應該會跳錯。
然後f.close()這句應該不是必要的,with會自己幫你關。

去補python基礎吧,300小時要學基礎和爬蟲應該很難。

paicheng0111 iT邦研究生 2 級 ‧ 2019-09-09 10:34:22 檢舉

@froce,不報價嗎?

froce iT邦大師 5 級 ‧ 2019-09-10 10:12:21 檢舉

學到有問題,好好的發問,這裡都有人教。
自己靜下心來,把一些基本教學看完,不會的再問吧。

像是爬蟲這種背後有背景知識要求、沒有定則的東西,我覺得你才需要顧問。
pyyhon語法這個一堆資料可以查,把問題練好,不要每次都來大哉問我想應該會的都會回你。

8
ckp6250
iT邦新手 5 級 ‧ 2019-09-09 08:53:00

  我覺得這位樓主很有誠意,將來肯定學有所成。

  我看過許多人問問題時很沒禮貌,好像人家欠他一個答案,殊不知,台上一分鐘,台下十年功,有時,一個看似簡單的答案,可能背後隠藏數年的經驗累積。

  願意花錢請顧問,尊重對方的專業,難能可貴,我不會 python(我會的東西現在沒人要學),一點都幫不上忙,但我要幫樓主按個贊,加油。

我可以確定的是
他以為的「顧問」
一定和我認知的「顧問」
非常不一樣
/images/emoticon/emoticon06.gif

ckp6250 iT邦新手 5 級 ‧ 2019-09-09 11:55:27 檢舉

怎麼個不一樣?
通常不就是『顧此失彼』、『問東答西』嗎?

賽門 iT邦超人 1 級 ‧ 2019-09-09 13:53:34 檢舉

顧門和顧門口的差別了...

1
海綿寶寶
iT邦超人 1 級 ‧ 2019-09-09 11:06:13

要問人或者找顧問的話
你也可以去鐵人賽那裡找找看
有許多以 python 為主題的參賽者

選我正解

看更多先前的回應...收起先前的回應...
kevin543 iT邦新手 5 級 ‧ 2019-09-09 11:24:40 檢舉

是貼這裡嗎 ?
https://ithelp.ithome.com.tw/upload/images/20190909/201197427Z8rf77R9x.png

ant1017 iT邦新手 4 級 ‧ 2019-09-09 11:40:54 檢舉

如果真要貼,應該要貼在IT徵才才對...
其餘的地方,你用站內訊息詢問會比較合適點

dragonH iT邦大師 6 級 ‧ 2019-09-09 11:49:09 檢舉

我是這篇文作者的話

我一定滿頭問號 XD /images/emoticon/emoticon37.gif

賽門 iT邦超人 1 級 ‧ 2019-09-09 13:54:49 檢舉

我想, 他的問題應該是Python顧問的合理行情是多少錢?

kevin543 iT邦新手 5 級 ‧ 2019-09-09 15:24:20 檢舉

it 徵才不能貼 , 剛才貼被下架

it 徵才不能貼 , 剛才貼被下架

不是我建議的

之所以建議去鐵人賽問(問問題或找顧問)
是因為有些人每天只來貼鐵人賽文章就走(註)而不會來技術問答區
去鐵人賽找用 python 作為主題的參賽者問問題
如果又剛好碰到想不出要寫什麼內容的參賽者的話
也會有比較高的機會問到答案

註:有人會看貼文的回應,有人連回應都沒在看,貼了就走

我要發表回答

立即登入回答