作者:
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)
有人知道要怎麼修改嗎
謝謝
你的爬蟲被偵測到了,可能是cookies或是ip等其他方式
作者:
kakar0to (Poker Face)
2020-10-09 17:18:00我程式應該沒有開cookie
作者:
TakiDog (多奇狗)
2020-10-09 19:28:00用requests吧 簡單的多
作者:
azuel (Observer)
2020-10-10 13:35:00感覺中華電信固網ip被地圖砲黑名單大概有人沒寫sleep又出包狂retry
作者:
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可以連得上這個網址
作者:
kakar0to (Poker Face)
2020-10-10 14:57:00('Connection aborted.', ConnectionResetError(10054,'遠端主機已強制關閉一個現存的連線。', None, 10054, N
每次請求ip都隨機拿的並不會被黑單,就算被黑也無所謂
作者:
kakar0to (Poker Face)
2020-10-10 14:58:00one))我現在程式只有一行
作者:
kakar0to (Poker Face)
2020-10-10 15:11:00感謝f大的資料庫
作者:
azuel (Observer)
2020-10-10 15:17:00f大的資料庫很棒,連外國的也有整理,感謝
先用 tracert 指令測試 www.twse.com.tw 看看。關掉 ipv6 試試看,中華電信固網 用 ipv6 連 twse 會不穩定。
作者:
kakar0to (Poker Face)
2020-10-10 20:46:00chrome可以成功執行這個網址 所以我覺得應該不是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已經把答案講出來了 我還在鬼打牆真的太蠢