ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助用Excel爬取数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-2-3 14:57 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
今天在网上看到一个免费试卷网。https://www.shijuan1.com/ 网站里的试卷没有做分类筛选,想找到特定的版本和年级的试卷很费劲。于是我用Excel把想要的三年级的数学试卷名称全部爬了下来。爬下来后发现没有用,爬下来的数据没有相应的链接无法直接打开。想请教大神们,有没有方法能把数据的URL也爬下来,这样直接点击后面的URL就能直达相关试卷页面。

image.jpg
这是我爬下来的试卷名称。
image.jpg
想要的结果,后面多URL,点击直达

TA的精华主题

TA的得分主题

发表于 2024-2-3 21:18 | 显示全部楼层
Text.FromBinary(Web.Contents())获取源码,然后当文本处理,Text.BetweenDelimiters提取首尾分隔符之间的文本

TA的精华主题

TA的得分主题

发表于 2024-2-5 17:17 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2024-2-12 11:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我试了一下,下面是用power BI Desktop做的,用Excel也可以,但是低版本不行。

以数学试卷三年级为例,它的网址是https://www.shijuan1.com/a/sjsx3/list_114_1.html,进入软件,依次选择:
”获取数据“——”web“——输入以上网址——由于不需要登陆,直接下一步——直到出现导航器——
注意,这时候不要使用默认给出的表,点击左下角的”使用示例添加表“
——进入新界面后,可以自行选择自己需要的内容,具体原理涉及网页代码的一些知识,不懂不要紧,大概意思就是它根据输入的内容自动提取相似的内容——复制网页标题,如”2020-2021学年三年级数学第一学期期末检测试卷四“,粘贴到列1的空白单元格,出现提示内容后,左键双击可以选择,一般粘贴一两个单元格后,它就能根据共同特点提取了,截图就是我粘贴了两个格子后自动填充的(深黑色是我粘贴的,浅黑色是自动填写的)
——同理在列2可以提取URL,观察一下规律就能发现,它的形式都是”https://www.shijuan1.com/a/sjsx3/320488.html“,区别只在最后一个斜杠右侧。在单元格输入”320488“,就有提示,双击输入后,就自动提取出来了——列1,列2还可以改列名,最终结果如图——观察发现URL省略了主网址,可以点击”转换数据“进入pq编辑器,新增一列,把主网址”https://www.shijuan1.com“和URL列连接即可。

其他注意点:
低版本的Excel没有”使用示例添加表“这个功能,本质上是它不支持几个新版本才有的M函数。
power BI Desktop的表也可以导出来,这软件免费的。
内容有很多页,如果需要多页,只要修改网址中红色字部分,如”https://www.shijuan1.com/a/sjsx3/list_114_1.html“。如果搞成自动翻页的需要用到变量等复杂一点的知识,这里就不罗嗦了,实际应该也用不到那么多页。
补充完整网址.png
选择所需内容3.png
选择所需内容2.png
选择所需内容.png
结果.png
导航器截图.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-15 17:15 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
tomslee 发表于 2024-2-12 11:44
我试了一下,下面是用power BI Desktop做的,用Excel也可以,但是低版本不行。

以数学试卷三年级为例, ...

大神,我要的就是99页的全部数据,能详细讲讲吗?

TA的精华主题

TA的得分主题

发表于 2024-2-15 18:53 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
image.png

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-16 12:26 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
感谢@静听溪流和@tomslee两位大神的帮助。我结合两位大神的思路,终于把这个做出来了。
首先,按照 @tomslee大神的方法,在PowerBi中做得第一页的数据。然后使用高级编辑器,插入@静听溪流大神使用的循环。
image.png
画红色横线部分是使用@静听溪流大神的循环对原来的代码做的改动。

TA的精华主题

TA的得分主题

发表于 2024-2-16 17:09 | 显示全部楼层
sdrcjzt 发表于 2024-2-15 17:15
大神,我要的就是99页的全部数据,能详细讲讲吗?

过年回家没带电脑,刚看到。以下是完整步骤。

前边步骤比较简单,逐步操作就行,不再赘述:
获取数据——web——粘贴网址(选“基本”即可)——导航器——选择所需内容——转换数据——进入power query编辑器
重点是以下步骤:
1)点击“高级编辑器”,弹出窗口,可以看到软件自动生成的代码,这里只需要修改两处地方:一是在let前边另起一行,输入“(page as numberas table=>”,结尾是一个等号(“=”)和大于号(“>”)。二是重新构造网址,实际上是用Number.ToText(page)代替原有的数字,再用&拼接(如图一),注意用成对的引号包含字符串,公式不用。
简单解释下,page可以看作一个变量(也可以换其他喜欢的名字),类似解方程中未知数,用它代替网址中代表页数的数字,我们只需要把它替换成其他数字就可以得到其他的网页,接下来会演示。Number.ToText(page)这个公式顾名思义,就是把数字转换为文本格式。
对于有许多分页的网页,重点是找到网址的规律,以数学一年级为例,
第四页https://www.shijuan1.com/a/sjsx1/list_112_4.html
对比可以发现只有一个数字不同,它正好对应页数,尝试把第一页网址改为https://www.shijuan1.com/a/sjsx1/list_112_1.html也能打开,印证猜想,于是采用如上思路构造网址。
这一步完成后会看到图二界面,其实这里已经完成了一个自定义函数,输入数字点击就可以使用。为了使用方便,修改其名称为“分页提取内容”。
2)依次点击:主页——新建源——空查询——在公式框输入“={1..10},enter(如图三)——点击“到表”,弹出对话框,直接确定——鼠标移到列的左上角,如图四所示,点击选择“整数”。
简单说明,这里其实是构造了一列数字,用它来代替页数。={1..10}是固定语法,1是数列起点,10是终点,中间是两个英文句号,外边是一对大括号。为了节省时间这里只写了10页,实际可根据需要修改大小。也可以使用公式= List.Numbers(起点,数字个数,间隔),如= List.Numbers(1,5,2)会生成“1,3,5,7,9”。注意一定要在英文格式下输入。
3)添加列——调用自定义函数——在新对话框中选择(如图五,前边步骤都做对的话,这里只有一个选项)——同意隐私数据要求(如图六,图七)——保存后软件开始提取数据,如果页数较多,这里需要多等一会。
4)出现如图八所示的界面表示提取数据成功,点击如图八所示右上角的图标,把数据展开到每一列,可以选择保留或删除的部分,之后点击“关闭并应用”(如图九),这里也会多等一会。
5)在主界面做一个表,可以行排序,列排序等等,点击三个点...”,选择导出数据即可(如图十)。也可以做几个图表,如图条形图展示了每一个网页上提取了多少条内容,容易发现是否有遗漏(原网页每页有25条)。
更有用的是完成以后每次使用不需要重复以上步骤,只要点击“刷新”,就可以自动获得数据,非常方便。
其他注意点:PQ的公式等对大小写和文本格式非常敏感,一定要在英文格式输入,稍不注意就容易报错。
不建议一次性抓取太多页,够用就行,毕竟Excelpower BI专业不是干这个的,我提取30页就花了近30分钟。

以上步骤只有三处涉及输入公式,其他步骤都是鼠标点点,泛用性比较好,修改起来也比较方便。
操作失误上传不了附件了,截图贴在word上传网盘了。


评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-2-17 11:42 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
tomslee 发表于 2024-2-16 17:09
过年回家没带电脑,刚看到。以下是完整步骤。
前边步骤比较简单,逐步操作就行,不再赘述:获取数据—— ...

感谢大佬

TA的精华主题

TA的得分主题

发表于 2024-7-11 11:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这种就不要为难pq了  直接python吧
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-26 09:54 , Processed in 0.049523 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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