Python crawler 問題

82 回覆
1 Like 9 Dislike
2020-11-26 19:02:52
想學下你點解captcha
2020-11-26 19:02:53
我有data 你唔洗由頭寫
2020-11-26 19:03:52
咩data?
2020-11-26 19:10:46
咪你做緊呢堆股價囉
2020-11-27 00:54:05
我想了解滑動型同認字
2020-11-27 00:54:54
我主要想練下點係網上攞資料啫
2020-11-29 16:08:54
你幫我寫吓 我可以教你pandas點睇
2020-11-29 16:18:35
2020-11-29 16:18:57
你想寫咩先
2020-11-29 16:23:39
tg@ivan1028傾啦,真係幫到你
2020-11-29 20:06:09
試下
pd.read_html

有時連css都唔洗寫,已經整好晒變左df
2020-11-30 10:01:25
唔洗啦 我都打算買書學
2020-11-30 10:02:24
請問可唔可以講多少少?
呢個都有D興趣都學
2020-11-30 14:04:12
好多website都鐘意用<table>去裝住啲數字嘅內容,例如aastocks/yahoo finance/finviz呢類財經網站,用pd.read_html就最好。我見你用xpath指來指去要搵某個數字,如果你將個html content直接入去pd.read_html,pandas係識parse晒所有搵到嘅table然後return a list of dataframe比你。例如係咁寫:
resp = requests.get(url)
dfs = pd.read_html(resp.content)
# suppose your table is the third one
your_number = dfs[2].iloc[1,2]

一旦你拎到200 OK,首先就試下入pd.read_html睇下搵唔搵到你要個數,pandas搵唔到先用css selector/xpath去搵。前題係你個webpage必須係static,如果個數係要execute javascript先拎到,始終要用番selenium個類方法。
2020-11-30 14:48:17
即係如果係攞一啲form既data既話用pd.read_html會比較好?
定個意思係用pd.read_html定位個<table>比用xpath好?
因為如果做模擬輸入既話好似selenium會好啲
2020-11-30 15:20:55
你講緊aastocks入股票number?如果係url有埋個form data咁你砌好條url直接用GET request射server就拎到個page(可能要set user-agent header)。HTML通常都一係GET一係POST,用python砌好個packet,server個邊通常都照response。用selenium實得,但會變得間接同慢,視乎你要download幾多同幾快?

2020-11-30 15:34:55
一係GET同POST唔太明
因為而加用selenium好似要等先攞到data


packet 呢方面真係唔太識
想學下點用
因為見人地好似都係一個packet 就可以去處理好
好似幾好咁
2020-11-30 16:50:01
咁你首先要去了解下browser係如何運作。

當你用browser或者selenium去訪問一個website例如aastocks,好大機會首個GET request就係問server拎個plain html document。如果你見到網址最尾有一堆野,例如係http://www.aastocks.com/tc/stocks/quote/quick-quote.aspx?symbol=00700咁呢個就係GET request,你用requests.get(url)就可以send同一個packet去server度拎番同一個html document。當你browser接到plain html之後,佢會去run個document入面嘅javascript,然後呢堆javascript會再向server發出不同的request拎其他野,例如係圖片或json,最後就係你browser砌番個完整網頁比你睇。

如果你用selenium要等,咁有可能你要拎嘅數,本身並不存在於plain html入面(例如你要控制selenium去某個box打個股票number然後click某個button)。但你諗下,當你click某個button時,其實都係向server發出一個新的GET(或POST) request,咁情況你只需要知道你target要拎嘅數字(例如股價)存在於邊個request當中,然後用python直接射出相同request就可以。你可以玩下Chrome個developer tools,當你按下submit button時,去Network個tab可以睇到佢send咗個咩packet出去(通常有幾十個咁多,你留意最先發出的一兩個就OK),好大機會就係一個簡單GET request。

如果係第二種情況,佢個數字係要等selenium行晒啲javascript先拎到,咁你可以留意下Network個度發出個十鳩幾個packet,有冇邊啲係屬於json/csv/txt之類,呢啲可能係javascript向server發出用來update番數字的packet,如果你搵到,咁就用佢條url直接拎個json就搞掂啦。

如果server唔肯直接比個json你,咁佢地個backend都係高手,咁無計啦你唯有跟佢規矩用selenium行晒全部step啦。
2020-11-30 17:14:13
我用呢條去拎 win007 波盤啲料

2020-11-30 18:46:55
詳細到呢 其他網都冇咁勁
我都慢慢去load下
因為一直用selenium 都係講點用
但冇講解個原理

即係其實我可以直接request我想要既data
而唔洗等佢load曬全部野?
咁如何我知道左send咗個咩packet出去
咁我應該點GET request?

而第二個情況其實係唔係代表我條url直接拎個json
而唔洗理其他野?
但我有左佢個json要點去分散為我想要既野?

咁其實我用xpath係要經browser整合
先再去攞我要既野
我有冇理解錯?
如果係咁 咁就唔怪得會慢
因為我有試過用ie
個速度仲

aastocks個網我都係練下野
之前仲試過馬會個網

感謝高手巴打指教 真心學左唔少野 越嚟越想知多啲
2020-11-30 18:50:10
我都試過用soup去攞 但好似比較麻煩
不過應該係我問題

但你好多個loop喎

你係每分鐘攞一次?
2020-11-30 19:01:29
因為 win007 太撚慢 (而我仲要俾佢 block ip)
所以我係用 vpn 一炮過 download 晒先 run,呢度講緊一個聯賽一年,我手上有成幾萬個

Btw live 既我 scrap bet365 馬仔賠率
2020-12-01 09:20:13
點解會block 你IP
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞