ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[分享] 小白也抓网——分享网抓作品

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-19 11:50 | 显示全部楼层
VBA万岁 发表于 2014-11-19 11:21
160楼链接网页中的表格(一)共有144个待转换的字符,我只在常变量中用了其中常见的字符,其他的全用数 ...

补充一点,若待转换的网址字符串中含有数字,则需将常数变量str中的前29个数字全部用空格字符(或者160楼链接网页中的表格内前面29个待转字符)占位。

TA的精华主题

TA的得分主题

发表于 2014-11-20 11:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
renahu 发表于 2014-11-19 10:39
能不能再做个把网址所有字符都转成%24%30%40%。。。。,?网上的工具只能转汉字之类的,字母,数字都不转

这个问题现已经得到解决,详见吴姐的帖子第20楼及513楼):
不懂html也来学网抓(xmlhttp/winhttp+fiddler)

TA的精华主题

TA的得分主题

发表于 2014-11-20 11:42 | 显示全部楼层
VBA万岁 发表于 2014-11-20 11:35
这个问题现已经得到解决,详见吴姐的帖子第20楼及513楼):
不懂html也来学网抓(xmlhttp/winhttp+fiddl ...

以下test2代码可能有误——因为我没见过汉字的unicode码(即“\u”形式的编码),你能传一些汉字的unicode码上来测试吗?

Function GBKEnCode(strText)
    Dim i, s
    For i = 1 To Len(strText)
        s = Hex(Asc(Mid(strText, i, 1)))
        If Len(s) = 4 Then s = Left(s, 2) & "%" & Right(s, 2)
        GBKEnCode = GBKEnCode & "%" & s
    Next
End Function

Sub test2()
    MsgBox Replace(GBKEnCode("HTTP://www.apabi.com/ValidateCode.aspx的"), "%", "\u00")
End Sub

TA的精华主题

TA的得分主题

发表于 2014-11-21 08:57 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
renahu 发表于 2014-11-20 23:33
那就是:

我觉得第5句应改为:
s =IIf(Len(s) = 4, "", "00") & s

——汉字的unicode码应该不以"\u00"开头的,是吗?

TA的精华主题

TA的得分主题

发表于 2014-11-21 16:43 | 显示全部楼层
本帖最后由 VBA万岁 于 2014-11-21 16:53 编辑
renahu 发表于 2014-11-21 12:20
我觉得第5句应改为:
\u6211\u89C9\u5F97\u7B2C5\u53E5\u5E94\u6539\u4E3A\uFF1A


关于字符串与其unicode码之间的互换,请参见如下代码:
  1. Private Function Encode(strEncode As String) As String
  2.     Dim i As Long
  3.     Dim chrTmp As String
  4.     Dim ByteLower As String
  5.     Dim ByteUpper As String
  6.     Dim strReturn As String
  7.     For i = 1 To Len(strEncode)
  8.         chrTmp$ = Mid(strEncode, i, 1)
  9.         ByteLower$ = Hex$(AscB(MidB$(chrTmp$, 1, 1)))
  10.         If Len(ByteLower$) = 1 Then ByteLower$ = "0" & ByteLower$
  11.         ByteUpper$ = Hex$(AscB(MidB$(chrTmp$, 2, 1)))
  12.         If Len(ByteUpper$) = 1 Then ByteUpper$ = "0" & ByteUpper$
  13.         strReturn$ = strReturn$ & "\u" & ByteUpper$ & ByteLower$
  14.     Next
  15.     Encode = strReturn$
  16. End Function

  17. Sub 获取字符串unicode码()
  18.     ActiveCell = "HTTP://www.apabi.com/ValidateCode.aspx我觉得第5句应改为:"
  19.     MsgBox Encode(ActiveCell)
  20.     ActiveCell.Offset(1) = Encode(ActiveCell)
  21.     ActiveCell.Offset(1).Select
  22. End Sub

  23. Function unescape(strTobecoded As String) As String
  24.     With CreateObject("msscriptcontrol.scriptcontrol")
  25.         .Language = "JavaScript"
  26.         unescape = .Eval("unescape('" & strTobecoded & "');")
  27.     End With
  28. End Function

  29. Sub 根据unicode码返回字符串()
  30.     MsgBox unescape(ActiveCell)
  31.     ActiveCell.Offset(-1).Select
  32. End Sub
复制代码

TA的精华主题

TA的得分主题

发表于 2014-11-21 16:46 | 显示全部楼层
本帖最后由 VBA万岁 于 2014-11-21 16:54 编辑
VBA万岁 发表于 2014-11-21 16:43
关于字符串与码之间的互换,请参见如下代码:


其中,Encode函数的出处见于如下帖子1楼的第2段代码:
http://club.excelhome.net/forum.php?mod=viewthread&tid=1146746

TA的精华主题

TA的得分主题

发表于 2014-11-21 17:08 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
VBA万岁 发表于 2014-11-18 10:51
在ThisWorkbook中增加如下代码(红色字体部分),以在打开工作薄时获取图书分类数据。

Private Sub Wo ...

第3版的在打开工作簿时,为了方便看到工作表中的验证码,可在ThisWorkbook中加上如下代码以使窗体最大化:
Application.WindowState = xlMaximized
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-9-29 06:06 , Processed in 0.037736 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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