不用编程,用一行命令就能抓取网站信息

很多时候我们想要拿一些网站的信息做分析,而有用的信息经常是要登录后才能看到的。而且为了防爬虫,很多网站加了千奇百怪的验证码,这个就卡住了太多人。难道真的要学AI学编程才能拿到数据吗?

其实很早以前网页没那么复杂的时候,就有一些基于命令行的浏览器比如w3m,我们稍做定制就可以只看我们想的数据。但现在很多网站都改成用javascript 框架来实现了,我们就拿不到静态生成的html了。可网站上的数据从哪儿来呢,往往是一个json文件,然后再用javascript 渲染成页面。我们只要找到json文件,就可以拿到所有数据了。

首先打开Chrome, 登录你想进的网站,右键选“检查”,就会打开开发者工具,点Network选项卡

我们可以看到有很多项在下方,这些代表这个网页所有的HTTP请求,我们挨着点击后,选response, 直到发现类似json的数据, 这就代表网页从服务器端取回了一个json

我们再点Headers选项卡,找到Cookie: 全选后面那个长长的字符串选复制。再找到Request URL也存在某个文本文件里

这时我们就需要一个Linux主机了,windows10的用户可以安装wsl, 其它版本的则需要Cygwin或者一个虚拟机。 有安卓的同学可以装termux (我在以前的文章写过), 然后执行apt install jq curl 这两个是我们需要的工具

首先我们运行

curl -o test.json --cookie ""

三角括号里就是上面步骤中我们存好的两项,粘贴过来,运行后就会拿到test.json 文件

然后运行

jq '.' test.json

就会以良好的格式显示json的内容,我们可以修改上面的命令只取我们需要的数据 比如json类似这样的结构

{"data": {"list":[{"a":"b"},{"a":"c"}]}} 这样的,我们就可以用'.data.list[]" 取出所有list下面的数据

我们还可以写成一行语句实现功能,但要加个参数s,保证curl 不显示进度条

curl -s --cookie "" | jq '.data.list'

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180913A1XZIT00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券