当前位置: 首页 > 后端技术 > Python

Python爬取知乎热榜生成图片

时间:2023-03-26 15:23:22 Python

近日,日本计划向海中排放核废水的消息迅速占据了所有热搜,并在网络上引起轩然大波。随着事情的不断发酵,越来越多的人在网上参与了对此事的讨论。日本福岛核事故已过去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"importrequestsimportjsonimporttimefromPILimportImage,ImageDraw,ImageFontimportssl#全局禁用证书验证ssl._create_default_https_context=ssl._create_unverified_contextheaders={'User-Agent':'Mozilla/5.0(WindowsNT6.3;Win64;x64;rv:84.0)Gecko/20100101Firefox/84.0'}url="https://api.zhihu.com/topstory/热列表?limit=10&reverse_order=0"res=requests.get(url,headers=headers)res.encoding='utf-8's=json.loads(res.text)arrList=[]listTmp=s['data']foriinlistTmp:title=i['target']['title']arrList.append(title)defParseData(datas):forkeyinrange(len(datas)):dd="%s.%s"%(key+1,datas[key]+"\n")arrList.append(dd)returnarrListhotTitle="知乎热搜榜"+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=30d_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)#间距调整机制为不清楚怎么计算image.show()#直接显示图片image.save(time.strftime("%Y-%m-%d",time.localtime())+'.png','PNG')#保存在当前路径下,格式为PNGimage.close()右键运行代码,可以成功生成一个top50热榜话题的图片代码,并得到后台回复:“Generationofa热门榜单”。以上就是我今天要和大家分享的内容。