找回密码
 加入
搜索
查看: 4053|回复: 11

[AU3基础] 天涯论坛贴子网页文本提取-[已解决]

  [复制链接]
发表于 2011-6-10 14:07:11 | 显示全部楼层 |阅读模式
本帖最后由 netbean 于 2011-6-13 04:46 编辑

还不完善,请大家帮忙改善、纠错。
1,先保存天涯论坛贴子到MyDocumentsDir,如 http://www.tianya.cn/publicforum/content/no11/1/637021.shtml

2,加入要提取的发贴人“作者”名,如:小晴天儿

目前不能提取第一楼的内容,要修改;可能需要优化,纠错。谢谢!

$sFile = @MyDocumentsDir & "\637021.html"

$sHTML = FileOpen($sFile, 0)
$sText = FileRead($sHTML)
FileClose($sFile)
$Writer = '小晴天儿'
$Title = StringRegExp($sText, '<TITLE>(.*)</TITLE>', 3)
$WriterURL = StringRegExp($sText, '作者:<a href="(.+)" target="_blank">' & $Writer , 3)

$newText = ''
$newText &= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">' & @LF
$newText &= '<HTML><HEAD>' & @LF
$newText &= '<META http-equiv=Content-Type content="text/html; charset=gb2312">' & @LF
$newText &= '<TITLE>' & $Title[0] & '</TITLE>' & '</HEAD>' & @LF
$newText &= '<BODY style="FONT-SIZE: 14px; MARGIN: 1cm; LINE-HEIGHT: 0.5cm; FONT-FAMILY: 宋体; BACKGROUND-COLOR: #ffffff">' & @LF
$newText &= '<P style="FONT-SIZE: 28px; LINE-HEIGHT: 32pt; FONT-FAMILY: 黑体" align=center>' & $Title[0] & '</P></A><BR><FONT color=green><BR>' & @LF


$PostDate = StringRegExp($sText, '>' & $Writer & '.+日期:(.+)</(?:td|font)>' , 3)
$Content = StringRegExp($sText, $Writer & '.*\s+.*"post">(.+)<div class="post-jb">' , 3)

For $i = 0 to UBound($Content) - 1

$newText &= '<CENTER>作者:<a href="' & $WriterURL[0] & '" target="_blank">' & $Writer & '</a> 日期:' & $PostDate[$i] & '</CENTER>' & @LF
$newText &= $Content[$i] & '<P>' & @LF

Next

$newText = StringRegExpReplace($newText, 'img(.+)src' , 'img src')

MsgBox(0,0,'OK')
$newHtml = FileOpen(@MyDocumentsDir & "\new.html", 2)
FileWrite($newHtml, $newText)
FileClose($newHtml)
 楼主| 发表于 2011-6-10 14:46:19 | 显示全部楼层
28行加入:

$newText &= '</FONT></BODY></HTML>'
 楼主| 发表于 2011-6-10 18:37:00 | 显示全部楼层
修订版:
$sFile = @MyDocumentsDir & "\637021.html"
$sHTML = FileOpen($sFile, 0)
$sText = FileRead($sHTML)
FileClose($sFile)
$Writer = '小晴天儿'
$Title = StringRegExp($sText, '<TITLE>(.*)</TITLE>', 3)
$WriterURL = 'http://my.tianya.cn/name/' & $Writer
$newText = ''
$newText &= '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">' & @LF
$newText &= '<HTML><HEAD>' & @LF
$newText &= '<META http-equiv=Content-Type content="text/html; charset=gb2312">' & @LF
$newText &= '<TITLE>' & $Title[0] & '</TITLE>' & '</HEAD>' & @LF
$newText &= '<BODY style="FONT-SIZE: 14px; MARGIN: 1cm; LINE-HEIGHT: 0.5cm; FONT-FAMILY: 宋体; BACKGROUND-COLOR: #ffffff">' & @LF
$newText &= '<P style="FONT-SIZE: 28px; LINE-HEIGHT: 32pt; FONT-FAMILY: 黑体" align=center>' & $Title[0] & '</P></A><BR><FONT color=green><BR>' & @LF
$PostDate = StringRegExp($sText, '>' & $Writer & '.+日期:(.+)</(?:td|font)>' , 3)
$Content = StringRegExp($sText, $Writer & '.*\s+.*"post">(.+)<div class="post-jb">' , 3)
For $i = 0 to UBound($Content) - 1
        $newText &= '<CENTER>作者:<a href="' & $WriterURL & '" target="_blank">' & $Writer & '</a> 日期:' & $PostDate[$i] & '</CENTER>' & @LF
        $newText &= $Content[$i] & '<P>' & @LF
Next
$newText &= '</FONT></BODY></HTML>'
$newText = StringRegExpReplace($newText, 'img(.+)src' , 'img src')
MsgBox(0,0,'OK')
$newHtml = FileOpen(@MyDocumentsDir & "\new.html", 2)
FileWrite($newHtml, $newText)
FileClose($newHtml)
 楼主| 发表于 2011-6-10 18:39:13 | 显示全部楼层
以上修订贴子第二页不能提取错误;
一楼不能提取,还未解决
 楼主| 发表于 2011-6-11 10:20:08 | 显示全部楼层
继续顶

;;;
 楼主| 发表于 2011-6-11 22:42:18 | 显示全部楼层
<td align="center">作者:<a href="http://my.tianya.cn/name/NO落叶知秋" target="_blank">NO落叶知秋</a><span name="ad_logo_userid_46284317" value="46284317"></span> &nbsp;发表日期:2011-2-22 19:17:00</td>
                       
                        <!--举报 fangxu 2010-8-20-->
                </tr>
        </table>
        <!--结束首贴作者和日期-->
        <!--开始贴子内容-->
       
        <div class="allpost" id="pContentDiv">&nbsp;&nbsp;&nbsp;&nbsp;<div class="post">&nbsp;&nbsp;&nbsp;&nbsp;这里是免费教制作蛋挞和其他知名小西点的帖子,有一技之长加上有点头脑,就可以白手起家,有兴趣做西点业的朋友请关注了。<br>   西点在中国是非常有市场的,很多人想自己搞事业,但穷于没有资金和经验,其实只要换种思维就可以自己做老板。<br>   在大城市很多朋友会在家里制作蛋挞,然后发传单出去接单子,再往外送,这样就不需要店铺也不需要专门的销售员,那在这里我把制作蛋挞的配方和工艺免费给天涯的朋友,大家有什么不懂的地方尽管提出来,我会尽自己所学把技术教给你,不要怀疑,这是真滴。<br>     我专门开了个教制作蛋挞等西点的帖子,有兴趣的朋友请进http://bbs.332527.com/thread-90508-1-1.html<br>    卖3元以上,成本只要1元的葡式蛋挞,傲比KFC,有什么不会的地方请尽管问我,知无不言。<div class="post-jb">

<font size=-1 color=green>作者:<a href="/browse/Listwriter.asp?vid=46284317&vwriter=NO落叶知秋" target=_blank>NO落叶知秋</a><span name="ad_logo_userid_46284317" value="46284317"></span> 回复日期:2011-02-23 08:21:33</font> </center></TD><TD WIDTH=100 ALIGN=RIGHT VALIGN=bottom>&nbsp;</TD></TR></table>
<div class="post">  当然能啦,不然我还在这里发帖子干什么类。<br>  我把配方和详细的制作流程写在这里了,http://bbs.332527.com/thread-90508-1-1.html<br>  你复制下网业进去看看  有什么不懂的再联系我  <br>  <br>  设备只需要一台烤箱1千多点,蛋挞模具1元钱一个可重复利用的那种,外送盒子5毛一个,别的就不需要什么了。这些在市场上都能买到的,很方便。<div class="post-jb">


两段内容,想以“作者名”为依据,提取贴子内容,
$Content = StringRegExp($sText, $Writer & '.*\s+.*"post">(.+)<div class="post-jb">' , 3)
只能提取第二段,不能判断第一段,怎么改改?
发表于 2011-6-11 23:12:45 | 显示全部楼层
'(?si)' & $Writer & '.*?post">(.+)<div'
 楼主| 发表于 2011-6-11 23:34:08 | 显示全部楼层
多谢版主,还有些问题不能提取
请再帮忙看看
 楼主| 发表于 2011-6-12 13:32:49 | 显示全部楼层
终于搞好了
有个疑问,这两句为什么结果不同:
$Title = StringRegExp($sText, '<TITLE>(.*)</TITLE>', 1)
$Title = StringRegExpReplace($sText, '<TITLE>(.*)</TITLE>' , '$1')
发表于 2011-6-12 20:09:13 | 显示全部楼层
看不懂啊。
发表于 2011-6-12 20:46:44 | 显示全部楼层
StringRegExpReplace($sText, '<TITLE>(.*)</TITLE>' , '$1') 把匹配的内容替换为匹配的内容,结果应该不会有什么变化
发表于 2011-8-11 17:12:21 | 显示全部楼层
学习了,学习
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-10-1 19:27 , Processed in 0.104748 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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