最近日本准备把核废水排放至大海的消息迅速的霸占了所有的热搜,在网上也引起了轩然大波,随着事情的不断发酵,越来越多的人在网上参与了对该事件的讨论。

日本福岛核事故发生已过去10年多,但其核污水处理问题仍未解决。去年秋天,日本政府曾一度决定将把福岛核电站的核污水排入大海,但由于各方强烈反对等原因暂时搁置。

至于该事具体的走向,咱们也不得而知,如果真是如此的话,那么对于环境的污染,那肯定对环境来讲是一次巨大的危害。核电站的废水有多大危害,是个人都知道,日本人怎么会不知道?但是他们为什么还是决定要把废水倒入海洋?这样做,危害的是全人类,没有一个人会幸免。

自古某乎出大神,有兴趣的可以前往某乎看看大神们是如何评价这次事件的。与此同时,还有哪些事件成为了人们讨论的热搜呢,那么就引出今天的话题,爬取某乎热搜榜。

某乎热榜中的内容热度值,是根据该条内容近24小时内的浏览量、互动量、专业加权、创作时间及在榜时间等维度,综合计算得出的。某乎热榜即根据内容热度值制定的排行榜。

该次爬取某乎热榜的是采用的api接口获取,某乎热榜的接口为:


https://api.zhihu.com/topstory/hot-list?limit=10&reverse_order=0

至于爬取过程的话,因为有了相关的api接口,这样我们获取数据也比较简单,没什么难度,直接请求 url 即可返回相关的数据,有难度也无非是对获取的数据进行解析和存储,该次我们不对数据进行存储,会直接生成一个经排序后的热榜图片,以便于我们第一时间可以了解更多的动态和消息。代码如下:


# coding:utf-8
# __auth__ = "maiz"
# __date__ = "2021/4/3"
import requests
import json
import time
from PIL import Image, ImageDraw, ImageFont
import ssl
# 全局禁用证书验证
ssl._create_default_https_context = ssl._create_unverified_context
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:84.0) Gecko/20100101 Firefox/84.0'}
url = "https://api.zhihu.com/topstory/hot-list?limit=10&reverse_order=0"
res = requests.get(url, headers=headers)
res.encoding = 'utf-8'
s = json.loads(res.text)
arrList = []
listTmp = s['data']
for i in listTmp:
    title = i['target']['title']
    arrList.append(title)


def ParseData(datas):
    for key in range(len(datas)):
        dd = "%s.%s" % (key + 1, datas[key]+"\n")
        arrList.append(dd)
    return arrList


hotTitle = "知乎热榜" + time.strftime("%Y-%m-%d", time.localtime()) + "\n"
output_str = hotTitle+"".join(ParseData(arrList))
# print(output_str)

LINE_CHAR_COUNT = 50*2  # 每行字符数:30个中文字符(=60英文字符)
CHAR_SIZE = 30
d_font = ImageFont.truetype('C:/Windows/Fonts/mingliu.ttc', CHAR_SIZE)
lines = len(arrList)  # 计算行数

image = Image.new("L", (1600, 30*51), "white")
draw_table = ImageDraw.Draw(im=image)
draw_table.text(xy=(0, 0), text=output_str, fill='#000000', font=d_font, spacing=4)  # spacing调节机制不清楚如何计算

image.show()  # 直接显示图片
image.save(time.strftime("%Y-%m-%d", time.localtime())+'.png', 'PNG')  # 保存在当前路径下,格式为PNG
image.close()

右击运行代码,即可成功生成一个 top50 的某乎热榜话题的图片。代码获取后台回复:”某乎热榜生成“。

以上就是今天给大家分享的内容.


莜莜@爬小虫联盟
4 声望1 粉丝