怎么放代码_手把手教你改一行代码爬取知乎热榜

本文介绍了利用Chrome或火狐浏览器抓取知乎热榜题目和链接的方法。先通过F12打开控制台,切到Console栏目,利用审查元素找到目标HTML代码,复制代码到控制台执行,获取json格式数据,若需要还可将其转换为Excel表格。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// 真一行,不骗人!


// 注册一个console的save文件方法
(function (console) {
    console.save = function (data, filename) {
        if (!data) {
            console.error('Console.save: No data')
            return;
        }
        if (!filename) filename = 'console.json'

        if (typeof data === 'object') {
            data = JSON.stringify(data, undefined, 4)
        }
        var blob = new Blob([data], { type: 'text/json' });
        e = document.createEvent('MouseEvents');
        a = document.createElement('a');
        a.download = filename;
        a.href = window.URL.createObjectURL(blob);
        a.dataset.downloadurl = ['text/json', a.download, a.href].join(':');
        e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        a.dispatchEvent(e)
    }
})(console);
// 所有的link都放这里
var links = [];
// 获取li标签(这个li标签的class是HotItem-content)里面的所有a标签
// <li class="HotItem-content"><a href="/xxxx/">XXXX</a>xxxx</a></li >
var allItems = document.getElementsByClassName("HotItem-content");
for (var index = 0; index <= allItems.length; index++) {
    itemValue = allItems[index];
    if (itemValue !== undefined) {
        // 从这个item里面获取a标签
        aItems = itemValue.getElementsByTagName("a");
        // 如果存在a标签,就取第一个
        if (aItems) {
            links.push({ "link": aItems[0]["href"], "linkName": aItems[0].text });
        }
    }
};
console.log("完成抓取,启动保存。");
// 弹出下载按钮
console.save(links, "links.json");

所有的代码如上,需要理解的都写注释了。

怎么玩呢?

首先。

你有一个Chrome浏览器或者火狐浏览器。

然后...

F12打开控制台。

c5d9713164300659e5a688b69fec0194.png

然后切到Console栏目,大概就是长上面这个样子。

我们以“知乎热榜”作为实例玩吧。

现在需求:要所有的热榜题目和链接。

PS:别问为什么要,再问zs。

a691aa83cc448840d50ebdfb9f171bf1.png

91f97cb4da8a4fad74ee297b02df9da9.png

点击开发者工具的“审查元素”,这个鼠标箭头,然后移动到页面中。

95e9d9eed7ac08662755b29ca603f5c0.png

a952f6f28c6179f2ec75e64947f4d2ab.png

大概会是上面效果。

我们现在要做的是,找到想要抓取的内容在网页里面的HTML代码。

选中标题,点击后就能看到源码了。

PS: 下面的HTML是一种标记语言,格式是 <name></name>,可以各种嵌套。

9bbb7b5ddbaaf45faafd34f485c5b217.png
<a href="https://www.zhihu.com/special/19681091" title="全国新冠肺炎情况怎么样了?">
<h2 class="HotItem-title">全国新冠肺炎情况怎么样了?</h2>
<p class="HotItem-excerpt HotItem-excerpt--multiLine">了解疫情最新进展&gt;&gt;</p>
</a>

完整HTML代码差不多是这个样子,那么我们要的URL和标题都在里面了。

但是如果直接拿页面上所有的a标签的话,肯定是会拿到很多不是我们要的问题。

因为页面上大部门能点击的地方都是a标签。

7b4488e2bf5868d55c095e925a2341a0.png

所以,对于我们来说,就是要 div中class="HotItem-content"里面所有的a标签。

那么,怎么拿呢?

翻会上面的代码,找这一行:

// 把document.getElementsByClassName("className")改成上面HotItem-content
var allItems = document.getElementsByClassName("HotItem-content");

然后,把所有的代码复制一下。

扔到Chrome开发者工具里面的Console控制台执行。

afb37633b2c5abd260438ace0701ad4a.png

代码帖进去,回车。

d63777a0f73c55b4d1be1b31306c3353.png

b9e748365e809d07ceab692b60e8fbb4.png

随便用个文本编辑器打开,就看到json格式的数据了。

很多时候,我们可能需要Excel表格,那就转换一下格式。

https://json-csv.com/​json-csv.com

随手搜一个JSON to csv。

3c96eaed479e565d501a1701a4986c87.png

点击下载,完事。

好了,

完毕,

我去喝快乐水了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值