VBA 网抓无法获取源代码
vba吧
全部回复
仅看楼主
level 5
haifeistar 楼主
https://www.cmzj.net/mediaArena/home
类似上面这种网页,右键“查看页面源代码”,看不到页面实际显示的内容,盼高手给支支招!
2024年11月10日 00点11分 1
level 5
Sub GetDataFromWeb()
Dim http As Object
Dim url As String
Dim postData As String
Dim response As String
url = "https://i.cmzj.net/arena/getRanksByIssue" ' 设置URL
postData = "issue=2024129" ' 设置POST请求的载荷
Set http = CreateObject("MSXML2.XMLHTTP") ' 创建XMLHttpRequest对象
http.Open "POST", url, False ' 打开连接
http.setRequestHeader "Content-Type", "application/x-www-form-urlencoded" ' 设置请求头
http.Send postData ' 发送POST请求
response = http.responseText ' 获取返回的响应内容
Sheets(1).Range("A1").Value = response
Set http = Nothing ' 清理
End Sub
2024年11月10日 01点11分 2
issue=2024129的载荷是2024129期 自己用变量替换 ,最后得到的网页json分割一下提取数据自己能解决吧[呵呵]
2024年11月10日 01点11分
感谢帮助!但是我这里发送POST请求时出现问题,还请帮忙看看。谢谢!
2024年11月10日 02点11分
@haifeistar 啥子问题嘛
2024年11月10日 02点11分
@人工智障001 难道是电脑的问题?在线等[哈哈]
2024年11月10日 02点11分
level 5
haifeistar 楼主
http.send postData
运行到这里出现错误提示,多次测试还会出现两种不同的提示:
2024年11月10日 02点11分 3
level 5
haifeistar 楼主
不知道类似这种网页是不是就是所谓的 JavaScript渲染 或者 Ajax异步加载 ,不用Selenium就没法获取到JSON数据?
2024年11月10日 03点11分 4
你都找到这一步了后面就很简单了呀 直接访问这个接口拿数据了
2024年11月10日 04点11分
level 5
试试这个 数据 空白查询 添加以下代码
let
url = "https://i.cmzj.net/arena/getRanksByIssue",
headers = [
#"Content-Type" = "multipart/form-data; boundary=----WebKitFormBoundaryb1p5XWLNSDgVb2k0"
],
content = Text.ToBinary("------WebKitFormBoundaryb1p5XWLNSDgVb2k0
Content-Disposition: form-data; name=""issue""
2024129
------WebKitFormBoundaryb1p5XWLNSDgVb2k0--"),
response = Web.Contents(url, [Content = content, Headers = headers]),
web = Json.Document(response),
ranks = web[data][ranks],
splitRanks = List.Transform(ranks, each [
expertId = [expertId],
彩评师 = [name],
12红球 = Text.Split([value], "&"){0},
3蓝球 = Text.Split([value], "&"){1},
上期成绩 = [upResult],
上期得分 = [upScore],
本月得分 = [score],
奖金 = [bonus],
中蓝次数 = [count],
累计得分 = [allCount]
]),
ranksTable = Table.FromList(splitRanks, Splitter.SplitByNothing(), {"Rank Info"}),
expandedRanks = Table.ExpandRecordColumn(ranksTable, "Rank Info", {"expertId", "彩评师", "12红球", "3蓝球", "上期成绩", "上期得分", "本月得分", "奖金", "中蓝次数", "累计得分"})
in
expandedRanks
2024年11月10日 04点11分 5
level 5
给你发了空白查询的power query代码 但是好像屏蔽了 你瞅瞅能看到不
2024年11月10日 04点11分 6
谢谢!代码看到了,但是我是想通过VBA来获取。
2024年11月10日 04点11分
@haifeistar 那你添加http模块看看 不行的话就换一个模块啦
2024年11月10日 05点11分
@人工智障001 请问在您电脑上,用2楼的代码,可以正常获取JSON吗?
2024年11月10日 06点11分
@haifeistar 欸 我不就是2楼嘛 我运行了没有问题喔
2024年11月10日 06点11分
level 4
爬虫还得是python
2024年11月12日 09点11分 7
[大拇指]但是最终获取的数据要在表格里面处理
2024年11月13日 12点11分
level 8
看不懂,但是网页元素都是明的,关于获取不到无法理解,vba+selnium可以搞定
2024年11月16日 02点11分 8
1