runanchor 发表于 2013-5-23 09:23:37

【已解决】大家看看这个网页的数据如何获得

本帖最后由 runanchor 于 2013-6-23 19:35 编辑

http://www.ytcj.com/product.aspx?ClassId=204
大家看看这个网页的数据如何获得,百思不得啊,主要获得“ 黄金报价”中 黄金 白银的价格

xlj310 发表于 2013-5-23 11:02:33

沙发,占个位。有点兴趣,不过你这问个问题也太简单了,自己一点代码都没有!

runanchor 发表于 2013-5-23 11:43:03

http://3.baring.cn/quo/bin/quotation.dll/page/ytcj.com.CURR.htm

以上为内嵌地址,从源文件找不到思路啊,求大神们各抒己见

shqf 发表于 2013-5-23 12:22:21

换个思路,不是很精确,但应该可行。打开网页10秒后,移动鼠标到表格处(MouseMove,MouseClick或发送几个TAB) ,再发送ctrl +a,ctrl+c,数据已获取到粘贴板。

小凯 发表于 2013-5-23 16:55:26

本帖最后由 小凯 于 2013-5-23 16:56 编辑

http://3.baring.cn/quo/bin/quotation.dll/page/pageinfo.html?page=http://3.baring.cn/quo/bin/quotation.dll/page/ytcj.com.CURR.htm 这个内嵌网页好像有监测!!
直接获取网站页面文本`然后再筛选下`就出来你想要的结果了!!!


<table id="quotation_grid" cellpadding="0" cellspacing="0"><thead><tr><th class="symbol_col">代码</th><th field="Name">商品</th><th field="Price">最新</th><th style="width:15px;" field="Arrow"></th><th field="Open">今开</th><th field="Close">昨收</th><th field="High">最高</th><th field="Low">最低</th><th field="Fluctuatation">涨跌</th><th field="FluctuatationRate">涨跌幅</th></tr></thead><tbody><tr><td class="symbol_col">CRXAU</td><td>现货黄金</td><td class="g">1388.57</td><td class="ad"></td><td class="g">1368.27</td><td class="">1368.25</td><td class="g">1390.12</td><td class="l">1356.60</td><td class="g">20.32</td><td class="g">1.49%</td></tr><tr><td class="symbol_col">CRXAG</td><td>现货白银</td><td class="g">22.530</td><td class=""></td><td class="g">22.240</td><td class="">22.150</td><td class="g">22.560</td><td class="l">21.970</td><td class="g">0.380</td><td class="g">1.72%</td></tr><tr><td class="symbol_col">CRXPD</td><td>现货钯金</td><td class="l">734.80</td><td class=""></td><td class="l">743.50</td><td class="">743.60</td><td class="g">745.50</td><td class="l">732.00</td><td class="l">-8.80</td><td class="l">-1.18%</td></tr><tr><td class="symbol_col">CRXAP</td><td>现货铂金</td><td class="l">1458.00</td><td class=""></td><td class="l">1464.00</td><td class="">1467.00</td><td class="g">1469.00</td><td class="l">1452.00</td><td class="l">-9.00</td><td class="l">-0.61%</td></tr></tbody></table>

runanchor 发表于 2013-6-21 19:12:54

回复 5# 小凯


    谢谢啊,我用鼠标点击右键 查看源文件 得到如下,

你上面的是如何得到的啊?

<!DOCTYPE HTML>
<html>
<head>
    <title>WEB报价页面信息</title>
    <script type="text/javascript" src="../../../script/jquery-1.5.1.min.js"></script>
    <script type="text/javascript" src="quotation.js"></script>
    <script type="text/javascript">
      function init() {
            var pg = location.search.slice(6);
            if (pg.length > 0) {
                var req = $.ajax({
                  url: pg,
                  success: function (txt) {
                        var mt = txt.match(/<table.*<\/table>/mi);
                        $("#quotation_container").html(mt.toString());

                        var mcss = txt.match(/<link.*href=\"(.*?)\".*?>/mi);
                        var e = document.createElement('link');
                        e.rel = 'stylesheet';
                        e.type = 'text/css';
                        e.href = mcss;
                        document.getElementsByTagName('head').appendChild(e);

                        update_quotation_grid();
                        $("#page_url").text(pg);
                  },
                  error: function () {
                        alert('页面不存在');
                        $("#page_url").text("页面不存在");
                  }
                });
            } else {
                alert('请求参数错误');
                $("#page_url").text("请求参数错误");
            }
      }
    </script>
    <style>
      * { font-size:13px; }
      html, body { overflow: auto; height: 100%; width: 100%; margin: 0; padding: 0; }
      a { color: #08c; }
      h4 { background-color: #369; color: White; margin: 5px 0 5px 0; }
    </style>
</head>
<body>
    行情数据由<a href="http://www.ytcj.com" target="_blank">倚天财经</a>提供
    <div id="quotation_container"></div><br />
<div>
<script type="text/javascript">
         alimama_pid = "mm_29475352_3437442_11138624";
         alimama_width = 200;
         alimama_height = 200;
</script>
<script src="http://a.alimama.cn/inf.js" type="text/javascript"></script>
</div>
    <div id="pageinfo_container">
      <h4>页面信息</h4>
      要访问的页面地址为:<br />
      <div id="page_url" style="width: 100%; margin: 0; white-space: nowrap; overflow: hidden;-o-text-overflow: ellipsis; text-overflow: ellipsis;"></div>
      此地址可以通过iframe嵌入到您的网站,嵌入后将不会跳转至本页面而直接加载行情。
      <h4>服务说明</h4>
      本页面为<a href="http://www.baring.cn" target="_blank">霸灵财经</a>WEB行情服务的页面,我们拥有股票,期货,港股,外汇,黄金,白银,全球指数等全市场数据,并能提供WEB的实时报价。我们可以为您订制网站专属的报价页面,有需求者请联系<a href="javascript:alert('访问www.baring.cn可查看详情。\n电话:021-62600110 65933586\n技术支持:\nQQ: 25484o936\n电话: 1861o288174');">我们</a>
    </div>
    <br />
</body>
</html>

kxl2088 发表于 2013-6-22 07:55:58

谷歌浏览器 右击审查元素,取网页内容,我一般都读入网页,然后正则所需要的,只要不是自己手工打得网页,都没问题。

morphling12345 发表于 2013-6-23 09:04:18

IE9以上版本,按F12打开开发者调试

morphling12345 发表于 2013-6-23 09:25:42

本帖最后由 morphling12345 于 2013-6-23 09:30 编辑

IE9以上版本,按F12打开开发者工具,ctrl+B用选择元素的光标,选中页面中的黄金报价数据

然后就大体知道该网页的框架了
form Form1
table
...
内嵌了个无id无name的iframe,黄金报价获取的数据来源是
网页http://3.baring.cn/quo/bin/quotation.dll/page/ytcj.com.CURR.htm


打开IE窗口,直接打开这个网页,然后用下面的代码就能抓取到这个数据来源的网页源文件,再之后就是改进下代码,直接定时IE后台打开这个页面抓取数据,然后用正则取数据,_filewritelog或filewrite写入保存的文本文件,再或者写入excel文件中
#include <IE.au3>
#include <File.au3>

Local $oIE = _IEAttach("http://3.baring.cn/quo/bin/quotation.dll/page/ytcj.com.CURR.htm","url")
Local $sText = _IEBodyReadHTML($oIE)
;MsgBox(4096, "Body Text", $sText)
If FileExists(@ScriptDir & "\tmp.log") Then
        FileDelete(@ScriptDir & "\tmp.log")
EndIf
FileWrite(@ScriptDir & "\tmp.log", $sText)
再贴个抓到的网页源文件,可以看到,里面有黄金数据<IFRAME style="BORDER-LEFT-WIDTH: 0px; HEIGHT: 0px; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; DISPLAY: none; BORDER-TOP-WIDTH: 0px; WIDTH: 0px" marginHeight=0 src="http://cdn.tanx.com/t/acookie/acbeacon2.html" frameBorder=0 marginWidth=0></IFRAME>行情数据由<A href="http://www.ytcj.com" target=_blank>倚天财经</A>提供
<DIV id=quotation_container>
<TABLE id=quotation_grid cellSpacing=0 cellPadding=0>
<THEAD>
<TR>
<TH class=symbol_col>代码</TH>
<TH field="Name">商品</TH>
<TH field="Price">最新</TH>
<TH style="WIDTH: 15px" field="Arrow"></TH>
<TH field="Open">今开</TH>
<TH field="Close">昨收</TH>
<TH field="High">最高</TH>
<TH field="Low">最低</TH>
<TH field="Fluctuatation">涨跌</TH>
<TH field="FluctuatationRate">涨跌幅</TH></TR></THEAD>
<TBODY>
<TR>
<TD class=symbol_col>CRXAU</TD>
<TD>现货黄金</TD>
<TD class=g>1295.93</TD>
<TD></TD>
<TD class=l>1278.60</TD>
<TD>1284.47</TD>
<TD class=g>1302.30</TD>
<TD class=l>1269.41</TD>
<TD class=g>11.46</TD>
<TD class=g>0.89%</TD></TR>
<TR>
<TD class=symbol_col>CRXAG</TD>
<TD>现货白银</TD>
<TD class=g>20.080</TD>
<TD></TD>
<TD class=g>19.599</TD>
<TD>19.591</TD>
<TD class=g>20.127</TD>
<TD class=l>19.370</TD>
<TD class=g>0.489</TD>
<TD class=g>2.50%</TD></TR>
<TR>
<TD class=symbol_col>CRXPD</TD>
<TD>现货钯金</TD>
<TD class=g>673.00</TD>
<TD></TD>
<TD>659.60</TD>
<TD>659.60</TD>
<TD class=g>678.50</TD>
<TD class=l>653.25</TD>
<TD class=g>13.40</TD>
<TD class=g>2.03%</TD></TR>
<TR>
<TD class=symbol_col>CRXAP</TD>
<TD>现货铂金</TD>
<TD class=g>1375.50</TD>
<TD></TD>
<TD class=g>1357.50</TD>
<TD>1357.00</TD>
<TD class=g>1378.50</TD>
<TD class=l>1330.50</TD>
<TD class=g>18.50</TD>
<TD class=g>1.36%</TD></TR></TBODY></TABLE></DIV><BR>
<DIV>
...

runanchor 发表于 2013-6-23 10:54:18

回复 9# morphling12345


    多谢,我试试看

zldfsz 发表于 2013-6-23 15:48:12

#include <IE.au3>
GUICreate("报价信息", -1, -1, -1, -1)
GUISetState(@SW_HIDE)
_IEErrorHandlerRegister()
$oie = ObjCreate("Shell.Explorer.2")
$GUIACTIVEX = GUICtrlCreateObj($oie, -1, -1,-1, -1)
$oie.navigate("http://3.baring.cn/quo/bin/quotation.dll/page/pageinfo.html?page=http://3.baring.cn/quo/bin/quotation.dll/page/ytcj.com.CURR.htm")
Local $Ele1
_IELoadWait($oie)
Sleep(4000)
$oie = _IEAttach("报价信息", "Embedded")
$huangjin = _IETagNameGetCollection($oie,"TD",2)
$huangjin = StringRegExp($huangjin.outerhtml, "(\d*\.\d*)", 3)
$baiyin = _IETagNameGetCollection($oie,"TD",12)
$baiyin = StringRegExp($baiyin.outerhtml, "(\d*\.\d*)", 3)
MsgBox(0,"提取结果","现货黄金 最新"&$huangjin&@CR&"现货白银 最新"&$baiyin)

runanchor 发表于 2013-6-23 16:56:09

本帖最后由 runanchor 于 2013-6-23 19:28 编辑

回复 11# zldfsz
    您太厉害了,果然能提取出价格
虽然我现在还看不懂,仍然十分感谢!您要能把思路和步骤详细
注释一下,就是稀缺的教材了,请教一下.outerhtml是什么意思啊?
大哥给建议一下,要想看明白需要补充那些知识啊?

runanchor 发表于 2013-6-23 19:25:35

本帖最后由 runanchor 于 2013-6-23 19:26 编辑

感谢大家的帮忙,特别感谢 zldfsz大师现已达到预期效果,
依葫芦画瓢,优化了一下大师的代码
$huangjin = _IETagNameGetCollection($oie,"TD",2)
$huangjin = StringRegExp($huangjin.outerhtml, "(\d*\.\d*)", 3)

$baiyin = _IETagNameGetCollection($oie,"TD",12)

$baiyin = StringRegExp($baiyin.outerhtml, "(\d*\.\d*)", 3)

MsgBox(0,"提取结果","现货黄金 最新"&$huangjin&@CR&"现货白银 最新"&$baiyin)




优化为$huangjin = _IETagNameGetCollection($oie,"TD",2)
$baiyin = _IETagNameGetCollection($oie,"TD",12)
MsgBox(0,"提取结果","现货黄金 最新"&$huangjin.innerText&@CR&"现货白银 最新"&$baiyin.innerText)

zldfsz 发表于 2013-6-23 21:28:05

回复 12# runanchor

其实我也是摸着石头过河,我是通过“风行者”的网页快捕生成的,并不清楚这些的用法,看到你改为.innerText,很不错,学习了

zhuang513 发表于 2016-7-22 05:34:18

提取结果{:face (411):}
页: [1]
查看完整版本: 【已解决】大家看看这个网页的数据如何获得