ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1165|回复: 5

[求助] 如何把每题各选项的所对应的代码提取出来放入E——J列?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2016-10-16 22:21 | 显示全部楼层 |阅读模式
本帖最后由 NewZealand 于 2016-10-16 22:28 编辑



想把网页源码中的题号id和各选项的id提取出来,用来自动填写答案
自动选中填答案的代码:.document.getElementById(t).Click




问题:如何把每题各选项的所对应的代码提取出来放入E——J列?


<input type="hidden" name="answer23616337" id="answer23616337" value="" /><label for="a"><input type="checkbox" name="answerinput23616337" id="24011434" value="24011434"/><b>A</b></label>


ID
题号
答案
答案代码
A
B
C
D
E
F
23615251
1
B
23615253
23615252
23615253
23615254
23615255

25380431
2
A
25380434
25380432
25380433
25380434
25380435

24850992
3
A
24850994
24850993
24850994


 
……




 
……




 
……




23616337
47
ABCD
24011434、24011435、24011436、24011437
24011434
24011435
24011436
24011437

23619068
48
ABC
23619069、23619070、23619071
23619069
23619070
23619071
23619072

 
49
ABD




23618554
50
ABCD
23960487、23960488、23960489、23960490
23960487
23960488
23960489
23960490








test01.rar (23.4 KB, 下载次数: 12)





TA的精华主题

TA的得分主题

发表于 2016-10-17 00:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 crazy0qwer 于 2016-10-17 00:30 编辑

固定文件名,工作簿目录下。

  1. Sub Crazy0qwer()
  2.     Dim Ad As Object
  3.     Dim Ar(1 To 1000, 1 To 2), Br(1 To 1000, 1 To 6)
  4.     Dim P As String, F As String, Str As String
  5.     Dim N As Long, X As Long, Y As Long, I As Long
  6.     P = ThisWorkbook.Path & ""
  7.     F = "onlineAnswerSjfs.do gqid=27623479.htm"
  8.     Set Ad = CreateObject("adodb.stream")
  9.     With Ad
  10.         .Charset = "utf-8"
  11.         .Type = 2
  12.         .Open
  13.         .LoadFromFile P & F
  14.          Str = .ReadText
  15.         .Close
  16.     End With
  17.     Set Ad = Nothing
  18.     X = 1
  19.     Do
  20.         X = InStr(X, Str, "name=""tkid""")
  21.         If X = 0 Then Exit Do
  22.         N = N + 1
  23.         Y = InStr(X + 19, Str, """")
  24.         Ar(N, 1) = Mid$(Str, X + 19, Y - X - 19)
  25.         X = InStr(X, Str, "第 ")
  26.         Ar(N, 2) = Val(Mid$(Str, X + 7, 3))
  27.         For I = 1 To 6
  28.             Y = InStr(X, Str, "type=""")
  29.             If Y = 0 Or Y > InStr(X, Str, "</div>") Then Exit For
  30.             X = InStr(Y, Str, "id=")
  31.             Y = InStr(X + 4, Str, """")
  32.             Br(N, I) = Mid$(Str, X + 4, Y - X - 4)
  33.         Next
  34.     Loop
  35.     Rows("2:1000").ClearContents
  36.     [A2].Resize(N, 2) = Ar
  37.     [E2].Resize(N, 6) = Br
  38. End Sub
复制代码


评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-17 07:57 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
大侠的代码精简,谢谢啦,值得学习。谢谢

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-19 19:50 | 显示全部楼层
我自己写了代码,用了dic、split等方法,能把题目和选项提取出来,但特别繁琐,能否再帮忙看看。
题目保存在题目代码列,答案A—F分别保存在对应的标题列。

ID        题号        答案        题目        A        B        C        D        E
23615251        1                第&#160;1&#160;道题、单选题:造成不良影响,情节较重的,给予____处分。        A.警告或者严重警告        B.严重警告或者撤销党内职务        C.撤销党内职务或者留党察看        D.留党察看或者开除党籍       
……        ……                ……                                       

TA的精华主题

TA的得分主题

发表于 2016-10-19 23:22 | 显示全部楼层
本帖最后由 crazy0qwer 于 2016-10-19 23:52 编辑
NewZealand 发表于 2016-10-19 19:50
我自己写了代码,用了dic、split等方法,能把题目和选项提取出来,但特别繁琐,能否再帮忙看看。
题目保存 ...
下面这段和上面一段代码,对文件格式要求较高,故结果不保证百分百。
  1. Sub Crazy0qwer1()
  2.     Dim Ad As Object
  3.     Dim Ar(1 To 1000, 1 To 2), Br(1 To 1000, 1 To 7)
  4.     Dim P As String, F As String, Str As String
  5.     Dim N As Long, X As Long, Y As Long, I As Long
  6.     P = ThisWorkbook.Path & ""
  7.     F = "onlineAnswerSjfs.do gqid=27623479.htm"
  8.     Set Ad = CreateObject("adodb.stream")
  9.     With Ad
  10.         .Charset = "utf-8"
  11.         .Type = 2
  12.         .Open
  13.         .LoadFromFile P & F
  14.          Str = .ReadText
  15.         .Close
  16.     End With
  17.     Set Ad = Nothing
  18.     X = 1
  19.     Do
  20.         X = InStr(X, Str, "name=""tkid""")
  21.         If X = 0 Then Exit Do
  22.         N = N + 1
  23.         Ar(N, 1) = Mid$(Str, X + 19, InStr(X + 19, Str, """") - X - 19)
  24.         X = InStr(X, Str, "第")
  25.         Ar(N, 2) = Val(Mid$(Str, X + 7, 3))
  26.         X = InStr(X, Str, ":")
  27.         Br(N, 1) = Mid$(Str, X + 1, InStr(X, Str, "</p>") - X - 1)
  28.         Y = X
  29.         For I = 2 To 7
  30.             Y = InStr(Y + 10, Str, "<p style=")
  31.             If Y = 0 Or Y > InStr(X, Str, "</div>") Then Exit For
  32.             Y = InStr(Y + 10, Str, "</span>")
  33.             X = InStrRev(Str, ">", Y - 2)
  34.             Br(N, I) = Mid$(Str, X + 1, Y - X - 1)
  35.         Next
  36.     Loop
  37.     Rows("2:1000").ClearContents
  38.     [A2].Resize(N, 2) = Ar
  39.     [D2].Resize(N, 7) = Br
  40. End Sub

复制代码

TA的精华主题

TA的得分主题

 楼主| 发表于 2016-10-20 19:26 | 显示全部楼层
crazy0qwer 发表于 2016-10-19 23:22
下面这段和上面一段代码,对文件格式要求较高,故结果不保证百分百。

网抓高手!佩服

用自己熟悉的方法提取文本然后再分割也实现了

        For Each inputs In .document.getElementsbyTagName("p") '.Document.all.Tag("input")
            Mytexts = Mytexts & inputs.innertext
        Next
        Mytext = Split(Mytexts, "道题、")




您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-20 07:28 , Processed in 0.050431 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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