问题描述
各位高手,本人正完成一个从网上抓数据的程序,因为新老版本数据的网页格式有所不同,正则表达式不能匹配,而且好像还有死循环的问题,哪位高手能帮忙解决一下啊。新数据正则表达式:<atarget='_blank's+href='http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=shd{6}&date=d{4}-d{2}-d{2}'>s*([^s]+)s+</a>s*</div></td>s*<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s新数据样本:<!--历史交易begin--><tablewidth="100%"border="0"align="center"cellpadding="0"cellspacing="10"class="table2"><tr><tdalign="left"valign="top"><formmethod="get"name="daily"action=""><selectname="year"><optionvalue="2011"selected>2011</option><optionvalue="2010">2010</option><optionvalue="2009">2009</option><optionvalue="2008">2008</option><optionvalue="2007">2007</option><optionvalue="2006">2006</option><optionvalue="2005">2005</option><optionvalue="2004">2004</option><optionvalue="2003">2003</option><optionvalue="2002">2002</option><optionvalue="2001">2001</option><optionvalue="2000">2000</option><optionvalue="1999">1999</option><optionvalue="1998">1998</option><optionvalue="1997">1997</option></select><selectname="jidu"><optionvalue="1">一季度</option><optionvalue="2">二季度</option><optionvalue="3">三季度</option><optionvalue="4"selected>四季度</option></select><inputtype="submit"value="查询"></form></td></tr></table><tableid="FundHoldSharesTable"><thead><tr><thcolspan="8">宇通客车(600066)<FONTCOLOR="blue">2011</FONT>年<FONTCOLOR="blue">4</FONT>季度复权历史交易</th></tr></thead><trclass="tr_2"><td><divalign="center"><strong>日期</strong></div></td><td><divalign="center"><strong>开盘价</strong></div></td><td><divalign="center"><strong>最高价</strong></div></td><td><divalign="center"><strong>收盘价</strong></div></td><tdclass="tdr"><divalign="center"><strong>最低价</strong></div></td><tdclass="tdr"><divalign="center"><strong>交易量(股)</strong></div></td><tdclass="tdr"><divalign="center"><strong>交易金额(元)</strong></div></td><tdclass="tdr"><divalign="center"><strong>复权因子</strong></div></td></tr><tr><td><divalign="center"><atarget='_blank'href='http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=sh600066&date=2011-11-22'>2011-11-22</a></div></td><td><divalign="center">235.778</div></td><td><divalign="center">242.439</div></td><td><divalign="center">239.373</div></td><tdclass="tdr"><divalign="center">233.558</div></td><tdclass="tdr"><divalign="center">6829412.000</div></td><tdclass="tdr"><divalign="center">154660496.000</div></td><tdclass="tdr"><divalign="center">10.573</div></td></tr><trclass="tr_2"><td><divalign="center"><atarget='_blank'href='http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=sh600066&date=2011-11-21'>2011-11-21</a></div></td><td><divalign="center">239.479</div></td><td><divalign="center">253.752</div></td><td><divalign="center">240.430</div></td><tdclass="tdr"><divalign="center">236.624</div></td><tdclass="tdr"><divalign="center">15819385.000</div></td><tdclass="tdr"><divalign="center">363487232.000</div></td><tdclass="tdr"><divalign="center">10.573</div></td></tr>老数据正则表达式:<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s+<td[^d]*([^<]*)</div></td>s老数据样本:<!--历史交易begin--><tablewidth="100%"border="0"align="center"cellpadding="0"cellspacing="10"class="table2"><tr><tdalign="left"valign="top"><formmethod="get"name="daily"action=""><selectname="year"><optionvalue="2011">2011</option><optionvalue="2010">2010</option><optionvalue="2009">2009</option><optionvalue="2008">2008</option><optionvalue="2007">2007</option><optionvalue="2006">2006</option><optionvalue="2005">2005</option><optionvalue="2004">2004</option><optionvalue="2003">2003</option><optionvalue="2002">2002</option><optionvalue="2001">2001</option><optionvalue="2000"selected>2000</option><optionvalue="1999">1999</option><optionvalue="1998">1998</option><optionvalue="1997">1997</option></select><selectname="jidu"><optionvalue="1">一季度</option><optionvalue="2">二季度</option><optionvalue="3">三季度</option><optionvalue="4"selected>四季度</option></select><inputtype="submit"value="查询"></form></td></tr></table><tableid="FundHoldSharesTable"><thead><tr><thcolspan="8">宇通客车(600066)<FONTCOLOR="blue">2000</FONT>年<FONTCOLOR="blue">4</FONT>季度复权历史交易</th></tr></thead><trclass="tr_2"><td><divalign="center"><strong>日期</strong></div></td><td><divalign="center"><strong>开盘价</strong></div></td><td><divalign="center"><strong>最高价</strong></div></td><td><divalign="center"><strong>收盘价</strong></div></td><tdclass="tdr"><divalign="center"><strong>最低价</strong></div></td><tdclass="tdr"><divalign="center"><strong>交易量(股)</strong></div></td><tdclass="tdr"><divalign="center"><strong>交易金额(元)</strong></div></td><tdclass="tdr"><divalign="center"><strong>复权因子</strong></div></td></tr><tr><td><divalign="center">2000-12-29</div></td><td><divalign="center">27.273</div></td><td><divalign="center">27.926</div></td><td><divalign="center">27.616</div></td><tdclass="tdr"><divalign="center">27.109</div></td><tdclass="tdr"><divalign="center">3218005.000</div></td><tdclass="tdr"><divalign="center">54368298.000</div></td><tdclass="tdr"><divalign="center">1.633</div></td></tr><trclass="tr_2"><td><divalign="center">2000-12-28</div></td><td><divalign="center">27.273</div></td><td><divalign="center">27.599</div></td><td><divalign="center">27.273</div></td><tdclass="tdr"><divalign="center">27.044</div></td><tdclass="tdr"><divalign="center">343697.000</div></td><tdclass="tdr"><divalign="center">5730195.000</div></td><tdclass="tdr"><divalign="center">1.633</div></td></tr>这两个分别运行是都没有问题,但当新老数据在一起是有悲剧了,当机。。。。。。我判断是老正则表达式的问题新老数据混合样本:<trclass="tr_2"><td><divalign="center"><atarget='_blank'href='http://vip.stock.finance.sina.com.cn/quotes_service/view/vMS_tradehistory.php?symbol=sh600066&date=2011-11-01'>2011-11-01</a></div></td><td><divalign="center">222.033</div></td><td><divalign="center">226.580</div></td><td><divalign="center">224.465</div></td><tdclass="tdr"><divalign="center">220.553</div></td><tdclass="tdr"><divalign="center">2691439.000</div></td><tdclass="tdr"><divalign="center">57055752.000</div></td><tdclass="tdr"><divalign="center">10.573</div></td></tr><trclass="tr_2"><td><divalign="center">2000-10-31</div></td><td><divalign="center">25.803</div></td><td><divalign="center">26.309</div></td><td><divalign="center">25.640</div></td><tdclass="tdr"><divalign="center">25.395</div></td><tdclass="tdr"><divalign="center">1338500.000</div></td><tdclass="tdr"><divalign="center">21314681.000</div></td><tdclass="tdr"><divalign="center">1.633</div></td></tr>望高手提携啊能否有针对新老数据的通用表达式
解决方案
解决方案二:
我是用Mtracer进行测试的http://www.regexlab.com/zh/mtracer/download.htm新老数据已经在程序里分别抓取完但合在一起过不去啊
解决方案三:
http://money.finance.sina.com.cn/corp/go.php/vMS_FuQuanMarketHistory/stockid/600066.phtml?year=2006&jidu=2这个是网页,新老数据混在一起,有没有通用的表达式可以抓取这个表格里的数据