delphi 提取字符串 查询某个ip返回的地理位置想提取ip地理位置,并写入edit。
请查看此网页的源代码‘http://open.baidu.com/ipsearch/s?wd=202.108.22.5&tn=baiduip&owd=202.108.22.5’
我复制出部分htm源代码,
</tr>
</table>
<div id="op_ipmid_res1" class="op_ipmid_res"><span>您查询的IP:<b>202.108.22.5</b></span><span>来自:<b>北京市</b></span><span style="margin:20px;font-size:13px;color:#656565">IP数据提供:<a href="http://www.ip138.com/" target="_blank" onmousedown="return nc({'title':this.innerHTML,'url':this.href,'p1':2,'p2':1})">ip138</a></span>
</div>
<script type="text/javascript">
(function(){//////////////////////获取网页源代码
uses ComObj,
var
xml : OleVariant;
r:string;
begin
xml := CreateOleObject('Microsoft.XMLHTTP');
xml.Open('GET',' http://open.baidu.com/ipsearch/s?wd=202.108.22.5&tn=baiduip&owd=202.108.22.5', False);
xml.Send;
r := xml.responseText;

解决方案 »

  1.   

    取<Br>和</Br>之间的字符不就成了,然后判断一下是否包含3个点,点之间的是否是数字,并且在0-255之间
      

  2.   

    找出规律,写个函数直接从<br>..</br>取
      

  3.   

    直接用字符截取就行了,用什么XML啊
      

  4.   

    搜索DELPHI HTML解析 ,最好自己看看HTML的结构,对你有好处。
      

  5.   

    解析HTML源码这种方式不好,万一人家的HTML格式做一点改变影响到你的某些解析标志,就要修改甚至重写
    还是通过 Web Service 接口较好
      

  6.   

    如果你要获得IP地址对应的地址信息,并且你给的网页具有代表性,那么:function Get_Addr(IP: String): String;
    var
      HTMLStr: String;
      n: Integer;
      p, p1, p2: PAnsiChar;
    begin
      Result := '';  //前面是取得网页内容的部分,你已经实现了  //把活得的网页内容,以字符串的形式保存到HTMLStr中  p := PAnsiChar(HTMLStr);
      p1 := StrPos(p, '><span>来自:<b>');
      Inc(p1, Length('><span>来自:<b>'));
      if p1 <> nil then
      begin
        p2 := StrPos(p1, '</b></span>');
        if p2 <> nil then
          Result := Copy(p1, 1, p2 - p1);
      end;
    end;这个函数够你用了
      

  7.   

    如果你想定位更精确些,那就做如下修改function Get_Addr(IP: String): String;
    var
      XMLStr: String;
      n: Integer;
      p, p1, p2: PAnsiChar;
    begin
      Result := '';  //前面是取得网页内容的部分,你已经实现了
      XMLStr := 'div id="op_ipmid_res1" class="op_ipmid_res"><span>您查询的IP:<b>202.108.22.5</b></span><span>来自:<b>北京市</b></span><span style="margin:20px;font-size:13px;color:#656565">IP数据提供:<a href="http://www.ip138.com/" target="_blank" ';
      p := PAnsiChar(XMLStr);  //定位你要查找的IP地址,这是为了过滤网页中可能存在多个后面查询的 <span>来自:<b> 字符串而做的定位操作
      p1 := StrPos(p, PAnsiChar('<span>您查询的IP:<b>' + IP + '</b></span>'));  if p1 = nil then Exit;  Inc(p1, Length('<span>您查询的IP:<b>' + IP + '</b></span>'));  if P1 = nil then Exit;  p1 := StrPos(p, '<span>来自:<b>');  if p1 = nil then Exit;  Inc(p1, Length('<span>来自:<b>')); //扫描通给定IP地址最近的那个实际地址  if p1 = nil then Exit;  p2 := StrPos(p1, '</b></span>');  //扫描实际地址的结束字符串  if p2 = nil then Exit;  Result := Copy(p1, 1, p2 - p1); //截取实际地址内容end;