作者kakar0to (Poker Face)
看板Python
標題[問題] 台灣證券交易所爬蟲
時間Fri Oct 9 15:52:07 2020
想請教版上高手
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)
有人知道要怎麼修改嗎
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.164.6 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Python/M.1602229930.A.9CB.html
1F:推 weel99699: 你的爬蟲被偵測到了,可能是cookies或是ip等其他方式 10/09 17:11
2F:→ kakar0to: 我程式應該沒有開cookie 10/09 17:18
3F:→ CaptPlanet: 短時間 request 太多次會被擋 10/09 18:04
4F:推 aidansky0989: 好久沒見這包 10/09 18:09
5F:→ TakiDog: 用requests吧 簡單的多 10/09 19:28
6F:推 andy19960407: 請用sleep 10/09 21:26
7F:→ azuel: 感覺中華電信固網ip被地圖砲黑名單 10/10 13:35
8F:→ azuel: 大概有人沒寫sleep又出包狂retry 10/10 13:35
9F:→ aidansky0989: 沒寫sleep比較好,一直睡爬太慢 10/10 13:56
10F:→ kakar0to: 我沒有短時間request太多次 只有一次就失敗 10/10 14:38
11F:→ kakar0to: 應該也跟sleep沒有關西 還有別的方法嗎 10/10 14:38
12F:→ azuel: 我說的是可能別人出包導致你用的浮動ip也被鎖定掉了 10/10 14:44
13F:→ azuel: 沒寫sleep求快就等著被特定出來放黑名單啊 10/10 14:45
14F:→ azuel: 自動化之後爬得慢也是背景再爬,存到db去要用再讀取就好 10/10 14:46
15F:→ kakar0to: 我覺得好像不是ip被鎖 因為chrome可以連得上這個網址 10/10 14:52
16F:推 aidansky0989: 看一下狀態碼 10/10 14:56
17F:→ kakar0to: ('Connection aborted.', ConnectionResetError(10054, 10/10 14:57
18F:→ kakar0to: '遠端主機已強制關閉一個現存的連線。', None, 10054, N 10/10 14:58
19F:→ aidansky0989: 每次請求ip都隨機拿的並不會被黑單,就算被黑也無 10/10 14:58
20F:→ aidansky0989: 所謂 10/10 14:58
21F:→ kakar0to: one)) 10/10 14:58
22F:→ kakar0to: 我現在程式只有一行 10/10 14:59
24F:→ f496328mm: 分享我做的台股open data,有api可以直接call,發reque 10/10 14:59
25F:→ f496328mm: st就好,不用再自己爬蟲 10/10 14:59
26F:→ kakar0to: 感謝f大的資料庫 10/10 15:11
27F:→ azuel: f大的資料庫很棒,連外國的也有整理,感謝 10/10 15:17
28F:噓 mickyang: 先用 tracert 指令測試 www.twse.com.tw 看看。 10/10 20:07
29F:→ mickyang: 關掉 ipv6 試試看,中華電信固網 用 ipv6 連 twse 會不 10/10 20:10
30F:→ mickyang: 穩定。 10/10 20:10
31F:→ kakar0to: chrome可以成功執行這個網址 所以我覺得應該不是ip被擋 10/10 20:46
32F:→ kakar0to: 的問題 10/10 20:46
33F:→ kakar0to: 有人可以用python成功request我文章裡面的url網址嗎 10/10 20:47
34F:→ azuel: 诶我試了一下,真的是chrome可以開但不能requests 10/10 22:40
35F:→ azuel: 然後真的ipv6關掉之後就正常 10/10 22:40
36F:→ azuel: mickyang大好神,這種情況要怎麼辨認出來呀? 10/10 22:42
37F:→ azuel: 怎樣才能知道是ipv6造成這種問題的?真的誠心問 10/10 22:42
38F:→ azuel: tracert下去看到有異狀但沒有想過改回ipv4會正常 10/10 22:44
39F:→ azuel: 啟用ipv6之後在code裡面force ipv4也可以動 10/10 23:07
40F:→ kakar0to: 感謝mickyang大 所以好像是chrome預設會用ipv4的樣子 10/11 11:27
41F:→ kakar0to: 關掉ipv6問題就都解決了 超強 10/11 11:28
42F:→ kakar0to: 我的爬蟲活過來了XD 10/11 11:31
43F:→ kakar0to: mickyang已經把答案講出來了 我還在鬼打牆真的太蠢 10/11 11:33