Python crawler 問題
無糖零可樂 2020-11-26 19:02:52 想學下你點解captcha
:^(

Ads

Tyuiop 2020-11-26 19:02:53 我有data 你唔洗由頭寫
無糖零可樂 2020-11-26 19:03:52 咩data?
:^(
Tyuiop 2020-11-26 19:10:46 咪你做緊呢堆股價囉
:^(
早撈湯丸 2020-11-26 20:50:03 此回覆已被刪除
無糖零可樂 2020-11-27 00:54:05 我想了解滑動型同認字
:^(
無糖零可樂 2020-11-27 00:54:54 我主要想練下點係網上攞資料啫
:^(
又急屎 2020-11-29 15:45:06 https://medium.com/@filipvitas/how-to-bypass-slider-captcha-with-js-and-puppeteer-cd5e28105e3c
有關滑動型既
Tyuiop 2020-11-29 16:08:54 你幫我寫吓 我可以教你pandas
:^(
點睇
無糖零可樂 2020-11-29 16:18:35
:^(
無糖零可樂 2020-11-29 16:18:57 你想寫咩先
:^(

Ads

Tyuiop 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 波盤啲料
:^(
:^(
:^(
:^(


:^(

Ads

無糖零可樂 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-1 09:20:13
:^(
點解會block 你IP