[問題] 台灣證券交易所爬蟲

作者: kakar0to (Poker Face)   2020-10-09 15:52:07
想請教版上高手
https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date=20201008&type=ALLBUT0999
這個網址我用chrome可以成功下載一個csv
但是我用python下載這個csv會失敗(之前python可以下載成功,不曉得為何最近開始
都沒辦法下載)
失敗訊息如下
[WinError 10054] 遠端主機已強制關閉一個現存的連線。
我目前的code如下
import urllib
import urllib.parse
import urllib.request
import urllib.error
url="
https://www.twse.com.tw/exchangeReport/MI_INDEX?response=csv&date=20201008&type=ALLBUT0999"
user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36"
headers = {'User-Agent': user_agent}
request = urllib.request.Request(url,None,headers)
response = urllib.request.urlopen(request)
有人知道要怎麼修改嗎
謝謝
作者: weel99699 (旦旦)   2020-10-09 17:11:00
你的爬蟲被偵測到了,可能是cookies或是ip等其他方式
作者: kakar0to (Poker Face)   2020-10-09 17:18:00
我程式應該沒有開cookie
作者: CaptPlanet (ep)   2020-10-09 18:04:00
短時間 request 太多次會被擋
作者: aidansky0989 (alta)   2020-10-09 18:09:00
好久沒見這包
作者: TakiDog (多奇狗)   2020-10-09 19:28:00
用requests吧 簡單的多
作者: andy19960407 (258698)   2020-10-09 21:26:00
請用sleep
作者: azuel (Observer)   2020-10-10 13:35:00
感覺中華電信固網ip被地圖砲黑名單大概有人沒寫sleep又出包狂retry
作者: aidansky0989 (alta)   2020-10-10 13:56:00
沒寫sleep比較好,一直睡爬太慢
作者: kakar0to (Poker Face)   2020-10-10 14:38:00
我沒有短時間request太多次 只有一次就失敗應該也跟sleep沒有關西 還有別的方法嗎
作者: azuel (Observer)   2020-10-10 14:44:00
我說的是可能別人出包導致你用的浮動ip也被鎖定掉了沒寫sleep求快就等著被特定出來放黑名單啊自動化之後爬得慢也是背景再爬,存到db去要用再讀取就好
作者: kakar0to (Poker Face)   2020-10-10 14:52:00
我覺得好像不是ip被鎖 因為chrome可以連得上這個網址
作者: aidansky0989 (alta)   2020-10-10 14:56:00
看一下狀態碼
作者: kakar0to (Poker Face)   2020-10-10 14:57:00
('Connection aborted.', ConnectionResetError(10054,'遠端主機已強制關閉一個現存的連線。', None, 10054, N
作者: aidansky0989 (alta)   2020-10-10 14:58:00
每次請求ip都隨機拿的並不會被黑單,就算被黑也無所謂
作者: kakar0to (Poker Face)   2020-10-10 14:58:00
one))我現在程式只有一行
作者: f496328mm (為什麼會流淚)   2020-10-10 14:59:00
https://github.com/FinMind/FinMind分享我做的台股open data,有api可以直接call,發request就好,不用再自己爬蟲
作者: kakar0to (Poker Face)   2020-10-10 15:11:00
感謝f大的資料庫
作者: azuel (Observer)   2020-10-10 15:17:00
f大的資料庫很棒,連外國的也有整理,感謝
作者: mickyang (mick)   2020-10-10 20:07:00
先用 tracert 指令測試 www.twse.com.tw 看看。關掉 ipv6 試試看,中華電信固網 用 ipv6 連 twse 會不穩定。
作者: kakar0to (Poker Face)   2020-10-10 20:46:00
chrome可以成功執行這個網址 所以我覺得應該不是ip被擋的問題有人可以用python成功request我文章裡面的url網址嗎
作者: azuel (Observer)   2020-10-10 22:40:00
诶我試了一下,真的是chrome可以開但不能requests然後真的ipv6關掉之後就正常mickyang大好神,這種情況要怎麼辨認出來呀?怎樣才能知道是ipv6造成這種問題的?真的誠心問tracert下去看到有異狀但沒有想過改回ipv4會正常啟用ipv6之後在code裡面force ipv4也可以動
作者: kakar0to (Poker Face)   2020-10-11 11:27:00
感謝mickyang大 所以好像是chrome預設會用ipv4的樣子關掉ipv6問題就都解決了 超強我的爬蟲活過來了XDmickyang已經把答案講出來了 我還在鬼打牆真的太蠢

Links booklink

Contact Us: admin [ a t ] ucptt.com