作者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/cn.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