ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] pq如何网抓多页数据?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-12-28 09:24 | 显示全部楼层 |阅读模式
刚接触PQ的网抓,遇到这样一个网页,目前只能对单页抓包,无法遍历多页。请大佬们请点,在此感谢了!
http://data.eastmoney.com/xg/xg/default.html

TA的精华主题

TA的得分主题

发表于 2020-12-28 12:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
PowerQuery参考解法
微信截图_20201228120450.png

新股申购与中签查询 _ 数据中心 _ 东方财富网.zip

919.09 KB, 下载次数: 36

评分

3

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-28 14:14 | 显示全部楼层
deadzlq 发表于 2020-12-28 12:05
PowerQuery参考解法

感谢大神帮助,还有两点需请教:
1、我想把Url的……p=#{0}……,直接改成:……p=_……,这样可以直接省略:Text.Format(Url,{_}),这样可以吗?
2、Web.Contents的第二可选参数,本例好像可以省之。请问哪些地方必须有,哪些地方无必要?
再次感谢!!!

TA的精华主题

TA的得分主题

发表于 2020-12-28 18:24 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
qmf 发表于 2020-12-28 14:14
感谢大神帮助,还有两点需请教:
1、我想把Url的……p=#{0}……,直接改成:……p=_……,这样可以直接 ...

试试就知道

TA的精华主题

TA的得分主题

发表于 2020-12-29 06:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
qmf 发表于 2020-12-28 14:14
感谢大神帮助,还有两点需请教:
1、我想把Url的……p=#{0}……,直接改成:……p=_……,这样可以直接 ...

原来没有老老实实写过PQ的网抓的操作步,这次就和你一起复习一下。我把参数逐个试了个遍,最后精简成这样:
  1. let
  2.     Scrape = (pg as number) =>
  3.     let
  4.         url = "http://dcfm.eastmoney.com/em_mutisvcexpandinterface/api/js/get",
  5.         qry = [type="XGSG_LB", token="70f12f2f4f091e459a279469fe49eca5", st="purchasedate,securitycode", sr="-1", p=Text.From(pg), ps="50"],
  6.         web = Table.FromRecords(Json.Document(Text.FromBinary(Web.Contents(url, [Query=qry]))))
  7.     in
  8.         web,
  9.    
  10.     Source = Table.Combine(List.Transform({1..50}, each Scrape(_)))
  11. in
  12.     Source
复制代码

先说第2点,从浏览器的抓包来看,每个页面都是GET请求,所以这两种写法等效:
  1. Web.Contents("http://xxx.xx.xxx/get?kw1=aa&kw2=bb&kw3=cc")
  2. Web.Contexts("http://xxxx.xx.xxx/get", [Query=[kw1="aa", kw2="bb", kw3="cc"]]
复制代码
我耐着性子把Query和Headers里的参数试了个遍,貌似st是用来排序的,sr不详但还是得要,p是当前页数,ps是每页显示数量;其他的参数都省略了,好像没什么影响。


你提到的第1点行不通,因为那样没办法把“第x页”作为参数传递进去;这里要对@deadzlq老师表达一下敬佩之情,原来从没留意过Text.Format(Url,{_})的语法,今天总算看到实际的用法了!

全部股票.rar

1 MB, 下载次数: 11

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-29 08:48 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

非常感谢!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-29 08:53 | 显示全部楼层
ThxAlot 发表于 2020-12-29 06:25
原来没有老老实实写过PQ的网抓的操作步,这次就和你一起复习一下。我把参数逐个试了个遍,最后精简成这样 ...

非常感谢大神耐心细致地讲解,把每一步都分解出来了,让初学者非常有益。但是,有2点需再讲教:
1、老师的附件,刷新后有点小Bag(详见图片),不知是哪里出错了?
2、我在3楼提问中的第1点试过,好像可以呢(详见附件)?
PS,现在没有小花了,下午再及时送上,见谅!
微信截图_20201229084730.png

全部股票.rar

921.87 KB, 下载次数: 2

TA的精华主题

TA的得分主题

发表于 2020-12-29 09:20 | 显示全部楼层
qmf 发表于 2020-12-29 08:53
非常感谢大神耐心细致地讲解,把每一步都分解出来了,让初学者非常有益。但是,有2点需再讲教:
1、老师 ...

过誉了,我不是大神,只是一个普通的学习者,可能只是稍微早一点开始学习相关知识。

1. 我用PQ for EXCEL和POWER BI都试了一下,都重现不了这个错误;google了一下,也没能找到关于这个报错的有用信息。会不会和电脑内存容量或操作系统的缓存页面大小有关?你把页面数量减少至{1..30}试一下看看?

2. 我看了你的附件,如果不用Text.Format(),那么“第X页”的参数就没法传入到每个query里,所以抓的始终是第一页(最后结果的每50行都是重复的)。

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-12-29 09:55 | 显示全部楼层
ThxAlot 发表于 2020-12-29 09:20
过誉了,我不是大神,只是一个普通的学习者,可能只是稍微早一点开始学习相关知识。

1. 我用PQ for EX ...

再次感谢,老师说的两点都对!
1、改成10页就没问题了;2、不可省Text.Fromat(),否则无法遍历。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-15 16:38 , Processed in 0.053074 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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