找回密码
 加入
搜索
楼主: 卫和谐

[网络通信] [已解决]这个网页中的内容用正则怎么提取

 火... [复制链接]
发表于 2011-11-25 20:09:19 | 显示全部楼层
回复 29# 卫和谐


    怎么不一样?
 楼主| 发表于 2011-11-25 20:12:27 | 显示全部楼层
回复 27# afan


能把两部分分开来做?
发表于 2011-11-25 20:13:25 | 显示全部楼层
回复 32# 卫和谐


    28#没看见?
发表于 2011-11-25 20:15:48 | 显示全部楼层
回复  卫和谐

一楼的源码和18楼的完全不一样...

第一个
([^
lixiaolong 发表于 2011-11-25 20:08


可能缺少特征,这样获取会多出许多~
他提供的网页右边排名应该只有20组~
 楼主| 发表于 2011-11-25 20:22:26 | 显示全部楼层
回复 34# afan


    看到了网速太慢,那如果要获取个人那部分呢?
发表于 2011-11-25 20:22:27 | 显示全部楼层
本帖最后由 qqmmcc 于 2011-11-25 20:24 编辑

用DOM 操作不是更方便吗?以20楼为例,节点是id="tbldwph"
获得该节点的innerText文本即可
正则也要看情况的用的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
 楼主| 发表于 2011-11-25 20:37:35 | 显示全部楼层
回复 34# afan


    再帮助看一下个人那部分吧,本人实在太菜了......
发表于 2011-11-25 20:40:13 | 显示全部楼层
回复 37# 卫和谐


    看了下,里面的排行类别很多,有单位、个人、单位人气、个人人气…… 不知道你要哪款?
发表于 2011-11-25 20:45:40 | 显示全部楼层
#include <INet.au3>
#include <array.au3>

$str=_INetGetSource ( "http://mms.shm.com.cn/smsRegs/2011jc/ListInfo.aspx",False)
$str=BinaryToString($str,4)

$array=StringRegExp($str,'(?ms)\<\!--个人人气--\>.*?/table\>',3)
$str=_ArrayToString($array,@CRLF)
$array=StringRegExp($str,'>\h*([\x{4e00}-\x{9fa5}\d]+)<',3)
Local $out_array[UBound($array)/3][2]
Local $k=0

For $i=0 to UBound($array)-1 Step 3
        $out_array[$k][0]=$array[$i+1]
        $out_array[$k][1]=$array[$i+2]
        $k+=1
Next
_ArrayDisplay($out_array)
 楼主| 发表于 2011-11-25 20:46:51 | 显示全部楼层
回复 38# afan

和单位一样,就是右侧那个个人排行列表,个人名字和票数!
发表于 2011-11-25 20:51:25 | 显示全部楼层
回复 40# 卫和谐


    右侧只有单位人气,没看到有个人的
 楼主| 发表于 2011-11-25 21:00:51 | 显示全部楼层
回复 39# 3mile


    为什么不用单位那种方式分开来写???
 楼主| 发表于 2011-11-25 21:03:47 | 显示全部楼层
回复 41# afan


  有啊,点击候选民警展示,右侧就可以切换啊
发表于 2011-11-25 21:05:54 | 显示全部楼层
回复 42# 卫和谐
第七行改为:
$array=StringRegExp($str,'(?ms)\<\!--单位人气--\>.*?/table\>',3)
发表于 2011-11-25 21:08:37 | 显示全部楼层
顶一个,顺便说声:正则的魅力不小!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-17 05:12 , Processed in 0.069959 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表