使用ASPJSON.ASP批量采集获取CSDN的下载列表

CSDN的下载列表引入了vue ssr的框架,大多数Vue项目要支持SSR应该是为了SEO考虑,毕竟对于WEB应用来说,搜索引擎是一个很大的流量入口。Vue SSR现在已经比较成熟了,但是如果是把一个SPA应用改造成SSR应用,成本还是有些高的,这工作量无异于重构前端。另外对前端的技术要求也是挺高的,需要对Vue比较熟悉,还要有Node.js 和 webpack 的应用经验。

基于此CSDN对搜索引擎是十分友好的。

 

 1、我们用getHTTPPage函数获取目标URL的html

Function getHTTPPage(url) 
On Error Resume Next
dim http 
set http=Server.createobject("Microsoft.XMLHTTP") 
Http.open "GET",url,false 
'Http.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
Http.setRequestHeader "Content-Type", "application/json"
Http.send() 
if Http.readystate<>4 then
    exit function 
end if 
getHTTPPage=bytesToBSTR(Http.responseBody,"utf-8")
set http=nothing
If Err.number<>0 then 
    Response.Write "<p align='center'><font color='red'><b>服务器获取文件内容出错</b></font></p>" &Err.number
    Err.Clear
End If 
End Function

2、使用strCut函数匹配到json数据

'截取字符串,1.包括起始和终止字符,2.不包括
Function strCut(strContent,StartStr,EndStr,CutType)
Dim strHtml,S1,S2
strHtml = strContent
On Error Resume Next
Select Case CutType
Case 1
    S1 = InStr(strHtml,StartStr)
    S2 = InStr(S1,strHtml,EndStr)+Len(EndStr)
Case 2
    S1 = InStr(strHtml,StartStr)+Len(StartStr)
    S2 = InStr(S1,strHtml,EndStr)
End Select
If Err Then
    strCute = "<p align='center'>没有找到需要的内容。</p>"
    Err.Clear
    Exit Function
Else
    strCut = Mid(strHtml,S1,S2-S1)
End If
End Function

3、用json的格式化工具瞅一眼,看看节点位置

 

 

 找到节点位置就方便了

4、引入aspjson1.18.asp 下载地址:https://github.com/gerritvankuipers/aspjson

<%
Set oJSON = New aspJSON

'载入json
oJSON.loadJSON(jsonstring)

'可以显示节点的value
'Response.Write oJSON.data("firstName") & "<br>"
'Response.Write oJSON.data("address").item("streetAddress") & "<br>"

'遍历该节点下所有Key与value
 For Each phonenr In oJSON.data("phoneNumbers") 

Set this = oJSON.data("phoneNumbers").item(phonenr)
Response.Write _
this.item(
"type") & ": " & _
this.item(
"number") & "<br>"

Next

%
>

5、用for each方法拼出csdn的下载完整地址:

For Each list In oJSON.data("pageData")("list")("apiSourceList") 
Set this = oJSON.data("pageData")("list")("apiSourceList")(list)
username =
this.item("username")

id = this.item("id")
 
Response.Write "https://download.csdn.net/download/"&username&"/"&id&"& "<br>" 

Next

6、你还可以采集列表list里的其它字段,比如文件的类型filetype,文件大小sourcesize等

username
posted @ 2022-09-02 16:10  刘二狗的码农人生  阅读(258)  评论(0)    收藏  举报