通过网页抓取数据

Power Query jerry ⋅ 于 2018-08-28 10:39:30 ⋅ 最后回复由 Alex 2018-10-12 20:52:23 ⋅ 3266 阅读

file

目的:通过web获取url指定的内容,在定义1列url,不断的取出每个url的内容

本帖已被设为精华帖!
本帖由 Alex 于 5年前 加精
最佳答案
  • Alex MOD 社区清洁工
    2018-08-28 12:37:52

    首先在高级编辑器中,最上面添加一行:

    (x)=>

    然后将代码中第一行的 url 修改为变量 x ,写作:

    源 = Web.BrowserContents(x),

    其他都不动,修改完后,查询 dianping 变成了函数的图标,表示这是一个自定义函数,就可以在查询 web 中调用这个自定义函数。

    假设在查询 web 中有一列字段名为 url ,那么只需要点击添加自定义列,输入:

    = dianping([url])

    即可批量抓取该列中每一个 url 的内容。

回复数量: 7
  • Alex MOD 社区清洁工
    2018-08-28 12:37:52

    首先在高级编辑器中,最上面添加一行:

    (x)=>

    然后将代码中第一行的 url 修改为变量 x ,写作:

    源 = Web.BrowserContents(x),

    其他都不动,修改完后,查询 dianping 变成了函数的图标,表示这是一个自定义函数,就可以在查询 web 中调用这个自定义函数。

    假设在查询 web 中有一列字段名为 url ,那么只需要点击添加自定义列,输入:

    = dianping([url])

    即可批量抓取该列中每一个 url 的内容。

  • jerry
    2018-08-28 13:42:39

    谢谢!

  • hw0139
    2018-09-06 22:08:20

    搬着小板凳,学习。

  • ksbor
    2018-10-11 22:01:37

    @Alex
    请教一下
    我要批量抓取以下网址数据该怎么办?日期从20180101到20181010,或任意日期到任意日期
    https://www.dszuqiu.com/diary/20181010

  • Alex MOD 社区清洁工
    2018-10-11 22:54:14

    @ksbor
    这个日期在 URL 里,还算是挺简单的吧,直接构建列表转换下就行了。

    = Table.Combine(List.Transform({43101..43383},each Web.Page(Web.Contents("https://www.dszuqiu.com/diary/"&Date.ToText(Date.From(_),"yyyyMMdd"))){0}[Data]))

    几百天的数据,一下子刷新可能有点慢,可以先缩小日期范围试试看。

  • ksbor
    2018-10-12 20:42:03

    @Alex
    {43101..43383}
    这个我不太理解,能解释一下吗?为什么代表20180101至20181010

  • Alex MOD 社区清洁工
    2018-10-12 20:52:23

    @ksbor
    这不和 Excel 里一样的么?日期的本质就是数字,两者可以相互转换,1表示1900年1月1日,每多一天就加一,43101就是 2018年1月1日。

暂无评论~~
  • 请务必阅读并严格遵守《社区管理规范与使用说明》
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,使用方法请见 发送表情,可用的 Emoji 见 :metal: :point_right: Emoji 列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板粘贴上传, 格式限制 - jpg, png, gif
  • 不支持上传附件,请尽可能用文字和图片将问题描述清楚,如实在需要上传附件,可上传到 共享网盘 后分享链接
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
  请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
Ctrl+Enter