ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南

[原创] 一键整理EH已回复历史帖,翻找借鉴自己的答案更方便!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-10-30 22:14 | 显示全部楼层
wcymiss 发表于 2014-6-7 22:53
uid=******换成 username=用户名 也行的。省的去找uid了。
比如:uid=2617308换成 username=百度不到去谷歌 ...
另外,还是有个方法可以不登录就查看其他用户的回帖和主题的。估计是网页的一个小bug。。


这个不是Bug ,一般的,点击某人的Id,进入他的空间 => 主题 =>回复 (或主题),这样是能看到此人所有的帖子的。
当然,此用户如果设置了 隐藏隐私,就不可见了。

点评

我说的是所有ID。就是说,即时设置了隐藏隐私的用户都能看到。  发表于 2014-10-30 22:40

TA的精华主题

TA的得分主题

发表于 2015-5-1 17:28 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
帖上代码回公司再测试——公司电脑登陆不了本论坛,但可以浏览本论坛。
Option Explicit
Public oDoc As Object

Sub 已回复帖子()
    'On Error Resume Next
    Dim objXml As Object, i&, surl$, uid$
    Dim strText As String
    Set objXml = CreateObject("MSXML2.XMLHTTP")
    Set oDoc = CreateObject("htmlfile")
    Application.ScreenUpdating = False
    Sheet3.[A2:D65536] = ""
    i = 1
    surl = "http://search.excelhome.net/f/search?sId=6931017&ts=1402196193&mySign=50eefb9f"
    surl = Escape(surl) 'utf-8编码
    With objXml
            .Open "get", "http://search.excelhome.net/", False '登陆搜索页得到sid
            .send
            strText = .responseText '搜索页面
            
            surl = Replace(HtmlFilter(strText, "advanced?", """"), "amp;", "") '取得高级搜索页面地址关键sid
            surl = "http://search.excelhome.net/f/search?" & surl & "&extFids=&qs=txt.adv.a&rfh=1&q=&author=" & Escape(Sheet3.[h2]) & "&searchLevel=3&orderField=posted&timeLength=0&threadScope=all&orderType=desc"
            .Open "get", surl, False '登陆搜索页得到uid
            .send
             strText = .responseText '搜索结果页面
            uid = HtmlFilter(strText, "uid=", """") '取得UID
            [H3] = uid
    End With
    surl = "http://club.excelhome.net/home.php?mod=space&do=thread&view=&type=reply&from=space&uid=" & uid
    Do
        With objXml
            '.setRequestHeader "Cookie", cookie
            .Open "GET", surl & "&page=" & i, False '该页面不需登录也可查看到用户回复列表
            .send
            strText = .responseText
        End With
        GetDate strText
        i = i + 1
        If InStr(strText, "下一页") = 0 Or i = [h1] Then Exit Do '回复列表没有下一页时停止搜索下一页,为防过久运行无结果设置100页上限
    Loop
    ActiveSheet.UsedRange.RemoveDuplicates Columns:=2, Header:=xlYes '去重
    [A2] = 1
    i = [B65536].End(xlUp).Row
    [A2].AutoFill Destination:=Range("A2:A" & i), Type:=xlFillSeries
    MsgBox "共为您整理回复贴" & i - 1 & "个"
    Application.ScreenUpdating = True
    Set objXml = Nothing
    Set oDoc = Nothing
End Sub

Public Sub GetDate(Text$)
    Dim i&, j&, txt$, k&, objTab
    Dim r, arr
    oDoc.body.innerHTML = Text$
    Set objTab = oDoc.getElementsByTagName("table").Item(0).getElementsByTagName("th")
    k = objTab.Length - 1
    ReDim arr(1 To 3, 1 To k)
    For i = 1 To k '遍历回复列表
        With objTab
        'Debug.Print i, .Cells(1).innertex
            'Debug.Print i, .Item(i).innerText
            arr(2, i) = .Item(i).innerText
            arr(3, i) = "http://club.excelhome.net/" & HtmlFilter(.Item(i).innerHTML, "<A href=" & """" & "about:", """")
            arr(3, i) = Replace(arr(3, i), "amp;", "") '去除无效字符
        End With
    Next
    j = [B65536].End(xlUp).Offset(1).Row
    Cells(j, 1).Resize(k, 2) = Application.Transpose(arr)
    For i = 1 To UBound(arr, 2)
        ActiveSheet.Hyperlinks.Add Cells(j + i - 1, 2), arr(3, i)
    Next
End Sub

Public Function Escape(ByVal strText As String) As String     '如果值中带有非英文和数字,则需转换成%形式
    Dim js
    Set js = CreateObject("msscriptcontrol.scriptcontrol")
    js.Language = "JavaScript"
    Escape = js.Eval("encodeURI('" & Replace(strText, "'", "\'") & "');") 'utf-8
    'Escape = JS.Eval("escape('" & Replace(strText, "'", "\'") & "');")'Unicode
    'Escape = js.Eval("encodeURIComponent('" & Replace(strText, "'", "\'") & "');")'局部完全编码 包括特殊符号
End Function

Public Function HtmlFilter(ByVal htmlText$, label1$, label2$)
    '返回html字符串lable1和最近的lable2标签中的数据
    Dim pStart As Long, pStop As Long
    '开始位置,结束位置
    pStart = InStr(htmlText, label1) + Len(label1)
    '找到标签信息的起始位置
    If pStart <> 0 Then
        pStop = InStr(pStart, htmlText, label2)
        HtmlFilter = Mid(htmlText, pStart, pStop - pStart)
    End If
End Function

TA的精华主题

TA的得分主题

发表于 2015-5-1 20:22 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-22 06:03 , Processed in 0.031905 second(s), 6 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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