今天分享一个股友比较关心的很实用的问题,同花顺千股千评网站的评语提取,废话不多说,直接上干货。
首先我们先看下网址:http://www.iwencai.com/stocks/comments
别小瞧这个网址,你们是搜不到的,不信你试试。现在我们打开网址瞧瞧是什么宝贝。
同花顺千股千评
接下来就是股友很关心的问题,就是怎么把网站内容取下来呢?别急,慢慢往下看。
加下来需要准备的工具:offcie的excel,一般人都有,然后复制下面的代码到VBA编辑窗口,如下图:
VBA编辑窗口
代码我也不私藏了:代码如下:
Sub qgqp()
Dim strText As String, n%, temp, r%, l%, brr, temp1, crr(1 To 4000, 1 To 13), g%, temp2
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = Format(Date, "yyyy年m月d日")
brr = Array("id", "code", "name", "comment", "question", "created", "updated", "stockName", "latestPrices", "chg", "dde", "ddeUnit", "selfstockTimes")
With CreateObject("MSXML2.XMLHTTP")
For n = 1 To 103
.Open "POST", "http://www.iwencai.com/stocks/comments-read?per=30&page=" & n & "&plate=all HTTP/1.1", False
.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
.setRequestHeader "Referer", ""
.Send
strText = Convert(.responsetext)
temp = Split(strText, "{")
For r = 2 To UBound(temp)
g = g + 1
For l = 0 To UBound(brr) - 1
temp2 = Split(temp(r), Chr(34) & brr(l + 1) & Chr(34) & ":")(0)
temp1 = Split(temp2, Chr(34) & brr(l) & Chr(34) & ":")
crr(g, l + 1) = Replace(Replace(temp1(1), ",", ""), Chr(34), "")
Next
crr(g, 13) = Split(Split(temp(r), Chr(34) & brr(12) & Chr(34) & ":")(1), "}")(0)
Next
Next
End With
Cells.Clear
Range("a1").Resize(1, 13) = brr
Columns("A:B").NumberFormatLocal = "@"
Range("a2").Resize(3000, 13) = crr
MsgBox "OK"
End Sub
Function Convert(strText As String) As String
With CreateObject("MSScriptControl.ScriptControl")
.Language = "javascript"
Convert = .eval("('" & strText & "').replace(/\d+;/g,function(b){return String.fromCharCode(b.slice(2,b.length-1));});")
End With
End Function
运行代码得到结果如下图:
然后数据透视整理一下结果,可以直观看到下面需求信息,真香。
上面的程序可能会杀毒软件报毒,还有千万不要外传和使用频率过高采取数据,服务器会丰IP,如果有帮助要低调,悠着点,要不然大家都看不了。
不过上面只是技术交流使用,大家不要做买卖依据,股市有风险,入市谨慎。
关注我,我会定期发布一些实用的经典EXCEL实战案列,也许对你刚好有需要,而我及时雨的出现。