免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
1234下一页
最近访问板块 发新帖
查看: 6568 | 回复: 31
打印 上一主题 下一主题

[文本处理] 关于XML和HTML的提取值的请教 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-09-26 00:00 |只看该作者 |倒序浏览
本帖最后由 qingyuan0o0 于 2013-09-26 16:06 编辑

我在网上搜索了关于很多提取值的代码,虽然我复制下来都能得到结果,但是却看不懂,不知道怎么修改成自己需要的代码


<postfield name="backUrl" value=""/><postfield name="touchTitle" value=""/><postfield name="touchTextLength" value=""/><postfield name="msg" value="$(msg1380120040127)"/><postfield name="csrfToken" value="b30bd351371c686298d32281b337e8e9"/></go></anchor><br/> 添加&gt;<anchor>表情<go method="post" href="/im/chat/insertPic.action?

代码中csrfToken是唯一的,我想要提取他的值b30bd351371c686298d32281b337e8e9(随机的每次都会变化),而不能根据value,因为代码类似的太多,值又不一样。

根据类似的代码,我找到一个<meta name="description" content="shell如何获取html页面的title和description里的内容"/>类似的

因为看不懂,我没办法模仿,实现语句是cat renren.html | grep -i 'description' | sed -e 's/<[^<]*=\"//g' | sed -e 's/"\ \/>$//g'

只是想知道我应该如何去获取,如果只是用grep的方式,我应该怎么改

csrfToken= `grep -Eo  '<postfield name="csrfToken"(.*?)' test | grep -Eo  'video=\w+`

按照大神在第一页说的
  1. <a href="/im/user/userinfoByuserid.action?touserid=123451047&amp;t=1380172127438">缘</a>[在线]&gt;<a href="/im/index/recentcontacts.action?touserid=123451047">换人</a><br/> [新]测试1[13:08]<br/> [新]测试2[13:08]<br/><input name="msg1380172127371" title="" value="" type="text" emptyok="true" maxlength="1000"/><br/><anchor>发送消息 <go method="post" href="/im/chat/sendMsg.action?touserid=123451047" accept-charset="utf-8"><postfield name="backUrl" value=""/><postfield name="touchTitle" value=""/><postfield name="touchTextLength" value=""/><postfield name="msg" value="$(msg1380172127371)"/><postfield name="csrfToken" value="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"/></go></anchor><br/> 添加&gt;<anchor>表情<go method="post" href="/im/chat/insertPic.action?touserid=123451047" accept-charset="utf-8"><postfield name="backUrl" value=""/><postfield name="touchTitle" value=""/><postfield name="touchTextLength" value=""/><postfield name="msg" value="$(msg1380172127371)"/></go></anchor>.<anchor>动作<go method="post" href="/im/chat/insertTouch.action?touserid=123451047" accept-charset="utf-8"><postfield name="backUrl" value=""/><postfield name="msg" value="$(msg1380172127371)"/></go></anchor>.<anchor>招呼<go method="post" href="/im/chat/sayHelloToFriend.action?touserid=123451047&amp;backUrl=" accept-charset="utf-8"></go></anchor><br/> ------------<br/> [13:06] 缘:测试<anchor>转<go method="post" href="/im/sayHello/sayHelloChooseFriendsByAll.action"><postfield name="type" value="all"/><postfield name="sayHelloText" value="测试"/><postfield name="fromSelect" value="fromSelectAll"/><postfield name="selectType" value="all"/></go></anchor><br/> [12:52] 我:hh<anchor>转<go method="post" href="/im/sayHello/sayHelloChooseFriendsByAll.action"><postfield name="type" value="all"/><postfield name="sayHelloText" value="hh"/><postfield name="fromSelect" value="fromSelectAll"/><postfield name="selectType" value="all"/></go></anchor><br/> (共1页)
复制代码
页面接收到消息会有提示一个[新]和后面的[13:08]时间,再一次刷新,就会变成下面的[13:06]对方用户名:内容到下面来了<anchor>转

而用'/新/!d 就变成包含新的行不删除,但是在wget下来后,所有内容就只是在第一行,并没有换行我应该怎么,一字不漏的把它记录下来,然后15秒后再刷新?

提取类似的这3部分,一个是,然后是按照时间先后顺序[13:08]排序内容测试1
[13:08] :测试1
[13:09] :测试2
每次内容变动后就按照时间递增
求大家帮忙

论坛徽章:
14
15-16赛季CBA联赛之辽宁
日期:2019-06-16 15:47:3515-16赛季CBA联赛之广夏
日期:2016-08-13 21:24:352015亚冠之武里南联
日期:2015-07-07 17:37:372015亚冠之萨济拖拉机
日期:2015-07-06 17:07:482015亚冠之全北现代
日期:2015-06-04 13:54:272015亚冠之城南
日期:2015-05-21 15:43:212015年亚洲杯之伊朗
日期:2015-04-25 18:20:362015年亚洲杯之伊朗
日期:2015-04-20 16:06:052015年亚洲杯之科威特
日期:2015-03-07 12:51:26丑牛
日期:2014-12-30 10:26:38申猴
日期:2014-09-28 22:40:18金牛座
日期:2014-09-13 21:12:22
2 [报告]
发表于 2013-09-26 00:22 |只看该作者
回复 1# qingyuan0o0


     grep -Eo  '<postfield name="csrfToken"(.*?)' c.txt |grep -oP '(?<=value=")[^"]+'

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
3 [报告]
发表于 2013-09-26 08:24 |只看该作者
  1. sed -r '/csrfToken/!d; s/.*csrfToken" value="([^"]+)".*/\1/' urfile
复制代码

论坛徽章:
0
4 [报告]
发表于 2013-09-26 10:29 |只看该作者
感谢楼上两位大哥帮忙,我测试过,第一句,会出现3个内容,包括了$(msg1380120040127) $(msg1380120040127)

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
5 [报告]
发表于 2013-09-26 10:42 |只看该作者
回复 4# qingyuan0o0
你测试第一句的时候是不是把那个c.txt忘了 ?

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
6 [报告]
发表于 2013-09-26 10:43 |只看该作者
回复 5# LikeLx


value="([^"]+)".*    高手,观察你用了很多次这样的写法,不是太明白,是表示以“开头后接一个或以上的"吗 ?

^在[]里面表示

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
7 [报告]
发表于 2013-09-26 10:46 |只看该作者
回复 6# Shell_HAT
多谢指点。

   

论坛徽章:
36
摩羯座
日期:2013-09-23 16:37:312015年亚洲杯之沙特阿拉伯
日期:2015-04-14 09:10:172015亚冠之柏太阳神
日期:2015-06-25 08:48:212015亚冠之武里南联
日期:2015-07-28 09:01:082015亚冠之莱赫维亚
日期:2015-07-28 15:44:172015亚冠之柏斯波利斯
日期:2015-09-06 14:08:52白银圣斗士
日期:2015-11-25 17:06:2815-16赛季CBA联赛之吉林
日期:2015-12-09 16:59:072016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之辽宁
日期:2016-04-14 09:29:04luobin
日期:2016-06-17 17:46:3615-16赛季CBA联赛之天津
日期:2016-08-16 14:11:01
8 [报告]
发表于 2013-09-26 10:50 |只看该作者
回复 6# Shell_HAT
高手,还想问下'/csrfToken/!d 这句是表示/csrfToken/之前的内容都删除吗?

   

论坛徽章:
33
ChinaUnix元老
日期:2015-02-02 08:55:39CU十四周年纪念徽章
日期:2019-08-20 08:30:3720周年集字徽章-周	
日期:2020-10-28 14:13:3020周年集字徽章-20	
日期:2020-10-28 14:04:3019周年集字徽章-CU
日期:2019-09-08 23:26:2519周年集字徽章-19
日期:2019-08-27 13:31:262016科比退役纪念章
日期:2022-04-24 14:33:24
9 [报告]
发表于 2013-09-26 11:07 |只看该作者
回复 8# LikeLx


    包含csrfToken的行不删

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
10 [报告]
发表于 2013-09-26 11:12 |只看该作者
awk可以处理呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP