案例说明
指定百度贴吧主题,随机读取Excel中评论信息进行消息发送
效果展示
案例实现
/*
需求: 随机在评论列表中选取一条评论, 在贴吧(电影)中进行评论
思路:
1, 打开网页
2, 搜索贴吧内容
3, 抓取内容
4, 打开链接
5, 发表评论
*/
dim hWeb = ""
// 1, 打开网页
Function open_url(url)
Try
hWeb = WebBrowser.BindBrowser("chrome",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
#icon("@res:default.png")
WebBrowser.GoURL(hWeb,url,true,{},30000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
Catch 变量名
hWeb = WebBrowser.Create("chrome",url,30000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"sBrowserPath":"","sStartArgs":""})
End Try
End Function
// 2, 搜索贴吧内容
Function search_tiezi(tiezi_name)
Try
#icon("@res:lu1uup2j-56nl-3d83-uob6-bhhfgpo9insk.png")
Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"INPUT","id":"wd1"}]},tiezi_name,true,20,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":500,"sKeyModifiers":[],"sSimulate":"message","bValidate":false,"bClickBeforeInput":false})
#icon("@res:e21f33k8-vtb8-6qla-7uuf-7qpngmv5v4o6.png")
Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"A","parentid":"tb_header_search_form","aaname":"进入贴吧"}]},"left","click",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
Catch 变量名
#icon("@res:lu1uup2j-56nl-3d83-uob6-bhhfgpo9insk.png")
Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"INPUT","id":"wd1"}]},tiezi_name,true,20,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":500,"sKeyModifiers":[],"sSimulate":"message","bValidate":false,"bClickBeforeInput":false})
#icon("@res:e21f33k8-vtb8-6qla-7uuf-7qpngmv5v4o6.png")
Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"A","parentid":"tb_header_search_form","aaname":"进入贴吧"}]},"left","click",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
End Try
End Function
// 3, 抓取内容
Function get_tiezi_data
dim arrayData = UiElement.DataScrap({"html":[{"id":"thread_list","tag":"UL"}],"wnd":[{"app":"chrome","cls":"Chrome_WidgetWin_1","title":"*"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}]},{"Columns":[{"props":["url"],"selecors":[{"index":0,"prefix":"","tag":"li","value":"li"},{"className":"t_con cleafix","index":0,"prefix":">","tag":"div","value":"div.t_con.cleafix"},{"className":"col2_right j_threadlist_li_right ","index":0,"prefix":">","tag":"div","value":"div.col2_right.j_threadlist_li_right"},{"className":"threadlist_lz clearfix","index":0,"prefix":">","tag":"div","value":"div.threadlist_lz.clearfix"},{"className":"threadlist_title pull_left j_th_tit ","index":0,"prefix":">","tag":"div","value":"div.threadlist_title.pull_left.j_th_tit"},{"className":"j_th_tit ","index":0,"prefix":">","tag":"a","value":"a.j_th_tit"}]}],"ExtractTable":0},{"objNextLinkElement":"","iMaxNumberOfPage":5,"iMaxNumberOfResult":-1,"iDelayBetweenMS":1000,"bContinueOnError":false})
return arrayData
End Function
// 4, 打开链接
Function open_tiezi_url(url)
Try
#icon("@res:default.png")
WebBrowser.GoURL(hWeb,url,true,{},30000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200})
Catch 变量名
Return false
End Try
Return true
End Function
// 5, 发表评论
Function send_comment(comment)
Try
#icon("@res:rq2v3e9m-2b03-cbkp-8rn8-fh7i85mjkcqk.png")
Keyboard.InputText({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"DIV","id":"ueditor_replace"}]},comment,true,20,10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":500,"sKeyModifiers":[],"sSimulate":"message","bValidate":false,"bClickBeforeInput":false})
#icon("@res:tt30fn12-95gc-obru-qq9o-v4evphd6ot9t.png")
Mouse.Action({"wnd":[{"cls":"Chrome_WidgetWin_1","title":"*","app":"chrome"},{"cls":"Chrome_RenderWidgetHostHWND","title":"Chrome Legacy Window"}],"html":[{"tag":"EM","parentid":"tb_rich_poster"}]},"left","click",10000,{"bContinueOnError":false,"iDelayAfter":300,"iDelayBefore":200,"bSetForeground":true,"sCursorPosition":"Center","iCursorOffsetX":0,"iCursorOffsetY":0,"sKeyModifiers":[],"sSimulate":"simulate"})
Catch 变量名
Return false
End Try
Return true
End Function
// 入口程序
Function main
// 1, 打开网页
open_url("https://tieba.baidu.com/")
// 2, 帖子搜索
search_tiezi("电影")
// 3, 抓取内容
dim arrayData = get_tiezi_data()
// 4, 打开网页
For Each urls In arrayData
// 打开网页
dim isOpen = open_tiezi_url(urls[0])
// 判断是否打开成功
if isOpen = false
Continue
end if
// 打开excel表
Try
dim objExcelWorkBook = Excel.BindBook("评论.xlsx")
Catch 变量名
objExcelWorkBook = Excel.OpenExcel("C:\\Users\\LaiYe\\Desktop\\源码讲解\\百度贴吧\\资料\\评论.xlsx",true,"Excel","","")
End Try
// 随机读取一条评论
dim arrayRet = Excel.ReadColumn(objExcelWorkBook,"Sheet1","B1")
dim count = Len(arrayRet)
dim random = CInt((Rnd() * (count - 2)) + 1) // [0-1] * 14 -> [0,14] -> [1,15]
// 发布评论
dim isSend = send_comment(arrayRet[random])
if isSend = false
TracePrint "发送失败 : " & urls[0]
end if
Next
End Function
main()