lluxury 发表于 2011-4-20 21:59:07

请教网页抓字符串的匹配问题,可能是bug,求高手

本帖最后由 lluxury 于 2011-4-21 15:04 编辑

我从网页抓的值,$mon的值是百花谷,为什么if条件总不成立,是引号的关系么

$oTd = _IETagNameGetCollection ($oIE, "td",0)
        $str=_IEPropertyGet($oTd, "innertext")
                                $mon=StringTrimLeft ( $str,3 )
                               
        If $mon="百花谷" then
                MsgBox(0, 0, $mon)
        $oForm = _IEFormGetCollection ($oIE, 1)
        $oSelect = _IEFormElementGetObjByName ($oForm, "method")
                        _IEFormElementOptionSelect ($oSelect,1,1, "byIndex")
        EndIf
                       


付源码,
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

<link rel="stylesheet" type="text/css" href="inc/style.css">

<title>武侠世界</title>
<link href="color/color1.css" type="text/css"/>
<script type="text/javascript" src="Ajax.js"></script>
</head>
<body>
<center>
<div id="header">
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
        <tr>
                <td align="center"><font class="font_map" size="5"><b>位置:百花谷</b></font>
                </td>

lluxury 发表于 2011-4-21 12:03:03

本帖最后由 lluxury 于 2011-4-21 18:14 编辑

网页抓出的值 :
位置:铁掌山 +>18:12:33 AutoIT3.exe 完成::0
截断,问题发生了
铁掌山 3??+>15:00:44 AutoIT3.exe 完成::0

求3??的去除方法

dingonet 发表于 2011-4-21 16:07:37

应该是 StringTrimLeft 函数处理中文的问题。不如msg一下看整个字符串是什么东西

骗子 发表于 2011-4-21 17:05:26

$str="位置:百花谷"
$mon=StringTrimLeft ( $str,3 )
MsgBox(0, 0, $mon)
这部分的结果是 百花谷 没错
$oTd = _IETagNameGetCollection ($oIE, "td",0)
      $str=_IEPropertyGet($oTd, "innertext")
MsgBox(0, 0, $str) ;加这么一句看看你获取的文字是不是 “位置:百花谷”

骗子 发表于 2011-4-21 17:06:34

另外楼主把这个游戏的网址发出来吧,我也想一遍玩一遍学习的编辅助

lluxury 发表于 2011-4-21 18:03:09

回复 4# 骗子

兄弟你太浮躁了,我之前也被这个问题困扰了1天,msg输出不是全的,有些输不出来

lluxury 发表于 2011-4-21 18:33:02

我是用数组处理的,限制很大,期待更好的解决方法

骗子 发表于 2011-4-22 09:21:19

回复骗子

兄弟你太浮躁了,我之前也被这个问题困扰了1天,msg输出不是全的,有些输不出来
lluxury 发表于 2011-4-21 18:03 http://www.autoitx.com/images/common/back.gif

就一个破空格就把你困扰了1天?
If $mon="百花谷 " then

另外可以试试

$oTd = _IETagNameGetCollection ($oIE, "td",0)
$str=_IEPropertyGet($oTd, "innertext")
If StringInStr($str, "百花谷") then
       MsgBox(0,"","找到百花谷了")
        $oForm = _IEFormGetCollection ($oIE, 1)
        $oSelect = _IEFormElementGetObjByName ($oForm, "method")
        _IEFormElementOptionSelect ($oSelect,1,1, "byIndex")
EndIf


把游戏地址给发上来一起玩吧

lluxury 发表于 2011-4-22 12:53:27

兄弟,真的不是空格的问题,你做的这个我做过了,有些特殊字符,MsgBox显示不出来,
举个例子,写字版上,段落符号,换号符号之类的也不显示,一个道理
我为什么用ConsoleWrite,就是发现了这个问题,

骗子 发表于 2011-4-22 15:14:42

虽然我很菜,但是我觉得
对于你1楼的内容问题就是在空格上,其实MsgBox已经显示出来空格了,只是因为跳出的窗口无法用鼠标选中,所以看上去和没显示空格是一样的,你看不到不代表没有,所以就要换个方法看看输出的到底是什么内容,就像你用ConsoleWrite
执行下面的几个命令看看结果
MsgBox(0,0,"1")
MsgBox(0,0,"1                                                             ")
MsgBox(0,0,"                                  1")
MsgBox(0,0,"            1       ")

========================================
这一行到底是只有这几个汉字呢?还是还有空格呢?                     
========================================
========================================
那这行到底是只有这几个汉字呢?还是还有空格呢?
========================================

lluxury 发表于 2011-4-22 22:20:36

..呵呵,你不是笨,你是太顽固了,看我2楼抓的输出,不但有空格还有2问号

骗子 发表于 2011-4-23 10:35:13

我是菜,但不笨
虽然你2楼的那个输出我不懂什么意思
你试过我给你的代码没?
对于你1楼的问题就是那个空格的问题
也不知道是谁顽固

love5173 发表于 2011-4-23 11:02:21

本帖最后由 love5173 于 2011-4-23 11:04 编辑

回复 1# lluxury
不是正则的问题,跟网站的编码方式有关,编码不一样提取出来的就是乱码,其实也不是乱码,只是你的显示不出来而已
尝试一下BinaryToString

lluxury 发表于 2011-4-23 11:35:40

本帖最后由 lluxury 于 2011-4-23 11:37 编辑

看了一下<meta http-equiv="Content-Type" content="text/html; charset=gb2312">

papapa314 发表于 2011-4-26 14:41:58

回复 1# lluxury


    看到楼主问了好多问题,能不能分享下做网页游戏挂的思路?
页: [1] 2
查看完整版本: 请教网页抓字符串的匹配问题,可能是bug,求高手