前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PQ- 综合实战:用Excel批量获取百度搜索结果——这感觉真是“爽”!

PQ- 综合实战:用Excel批量获取百度搜索结果——这感觉真是“爽”!

作者头像
大海Power
发布2021-08-30 10:19:55
2.4K1
发布2021-08-30 10:19:55
举报
文章被收录于专栏:用户8950297的专栏

小勤:我这里有一堆的地址,能不能知道哪些是医院,哪些不是?

大海:呵呵,你自己看着这些地址能看得出来吗?

小勤:当然不能啊,上面又没写着医院两个字。只能一个个百度……

大海:那我们就让Excel自己去自动百度呗。

小勤:啊!这也行!

大海:Power Query不是可以做爬虫吗?专治这种批量累人活儿。

Step-01:获取地址数据到PQ

Step-02:添加自定义列,用百度搜索引擎对地址进行搜索(返回第一页,一般10-15条),这个函数非常简单,就是用Web.Contents读取网页内容。公式:Web.Contents("http://www.baidu.com.cn/s?wd="&[地址])

Step-03:添加自定义列,将百度搜索返回结果中的内容转为一行行的文本,公式:Lines.FromBinary([百度])

Step-04:展开读取的内容

Step-05:筛选其中的结果文字(通过Web.Contents读取的是整个网页的html源代码,通过观察,发现返回结果的题纲文字部分均包含在<em>标签中——学会找规律很重要。

Step-06:判断搜索结果中是否包含有“医院”字样,公式:

if Text.Contains([读取百度结果内容到每一行],"医院")

then "医院"

else "非医院"

Step-07:基于“地址”和“是否医院”列删除重复项

Step-08:结果上载(可按需要删除不必要的列)

小勤:这太牛了!居然可以直接连到百度去批量搜索!

大海:对的。不过即使这样,上面搜索出来的结果也要再人工校对一下,因为这种判断条件比较简单,比如其中的“北京东城区……”那个,有的地方就没有医院2个字。

小勤:啊,不过这已经很好了——咦!我刷新的时候怎么出错了?

大海:你没上网吧!

小勤:晕!刚网断了!对了,或者是不是可以换个思路,接受再宽泛一点儿条件——只要返回第一页数据里有医院2个字的,就都算作医院就是了。

大海:那你可以尝试再改进一下,比如先分组合并一下各个地址的返回结果,然后再判断一下,还记得那个合并同类项的文章吗?

小勤:嗯,记得。先分组,然后修改代码用Text.Combine函数合并内容。

大海:对。另外,如果你确定这种方式得到的结果就已经满足要求的话,你可以将几个步骤用到的函数结合到一起,这样避免中间的数据展开等过程,速度应该会快一些。我在案例数据文件里也写了一个,你先试一下,有需要的话也可以去参考一下。

小勤:好!我试试。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel到PowerBI 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小勤:我这里有一堆的地址,能不能知道哪些是医院,哪些不是?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档