天涯论坛贴子网页文本提取-[已解决]
本帖最后由 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 & '</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 & '</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 = StringRegExpReplace($newText, 'img(.+)src' , 'img src')
MsgBox(0,0,'OK')
$newHtml = FileOpen(@MyDocumentsDir & "\new.html", 2)
FileWrite($newHtml, $newText)
FileClose($newHtml) 28行加入:
$newText &= '</FONT></BODY></HTML>' 修订版:$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 & '</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 & '</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)
以上修订贴子第二页不能提取错误;
一楼不能提取,还未解决 继续顶
;;; <td align="center">作者:<a href="http://my.tianya.cn/name/NO落叶知秋" target="_blank">NO落叶知秋</a><span name="ad_logo_userid_46284317" value="46284317"></span> 发表日期:2011-2-22 19:17:00</td>
<!--举报 fangxu 2010-8-20-->
</tr>
</table>
<!--结束首贴作者和日期-->
<!--开始贴子内容-->
<div class="allpost" id="pContentDiv"> <div class="post"> 这里是免费教制作蛋挞和其他知名小西点的帖子,有一技之长加上有点头脑,就可以白手起家,有兴趣做西点业的朋友请关注了。<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> </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)
只能提取第二段,不能判断第一段,怎么改改? '(?si)' & $Writer & '.*?post">(.+)<div' 多谢版主,还有些问题不能提取
请再帮忙看看 终于搞好了
有个疑问,这两句为什么结果不同:
$Title = StringRegExp($sText, '<TITLE>(.*)</TITLE>', 1)
$Title = StringRegExpReplace($sText, '<TITLE>(.*)</TITLE>' , '$1') 看不懂啊。 StringRegExpReplace($sText, '<TITLE>(.*)</TITLE>' , '$1') 把匹配的内容替换为匹配的内容,结果应该不会有什么变化 学习了,学习
页:
[1]