作者xlp (咖啡季节)
看板Python
标题[问题] 读取网页遭遇404 not found
时间Wed Sep 5 19:16:45 2012
请问关於一个抓取网页的情况,不知道该如何解决,
我想抓证交所上面的股票资料,
所以批次去抓,
过程中会遭遇某些网页在抓取的时候出现404 not found的情况,
我有把他的连结print出来看是正确的,
但是抓取网页时有反应404讯息的部份,
直接点选连结透过浏览器打开也会失败而找不到网页。
举个例子来讲: "假设"下面这个网页本来是打不开的(即程式抓取时反应404情况的网页):
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/
genpage/Report201208/201208_F3_1_8_5203.php?STK_NO=5203&myear=2012&mmon=02
此时只要透过浏览器回到选取股票的页面:
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/STOCK_DAY_AVGMAIN.php
再输入对应的代码5203
会得到跟上面例子一样的连结然後"成功"开启网页,经过这次的成功开启网页之後,
程式跑到原本会遭遇404 error的情况,就不会再出现error,
但是因为我可能遭遇到300个左右的404 error,不太可能一个一个去开,
不知道是否有针对这个case的处理方式呢?
片段code如下:
site=
http://www.twse.com.tw/ch/trading/exchange/STOCK_DAY_AVG/genpage/
Report201208/201208_F3_1_8_5203.php?STK_NO=5203&myear=2012&mmon=02
httplib.HTTPConnection.debuglevel = 1
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
content = opener.open(site).read() #这边会遭遇404 error
我後来用twisted的方式去读也是一样的情况,
一定要自己从输入代码的地方打开过连结一次之後,程式才会正确运作。
还请大家赐教
谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.15.126
1F:推 cobrasgo:老实说我看不太懂 09/05 21:05
2F:→ cobrasgo:另外你要抓个股资料的话,可以找有API的券商开户 09/05 21:06
3F:→ cobrasgo:用API又快又稳,也短期存取某些网站超过次数就会被block 09/05 21:06
4F:→ cobrasgo: 不会像 09/05 21:07
※ 编辑: xlp 来自: 220.134.15.126 (09/05 21:07)
5F:→ xlp:主要问题就是 网页如果没有事先读过 透过urllib抓取都会404 09/05 21:09
6F:→ xlp:还是谢谢回应 感谢 09/05 21:09
7F:推 cobrasgo:我也是有让它每天都去证交期交所抓,不过没这问题耶 09/05 21:39