千家信息网

怎么使用python爬取知乎热榜Top50数据

发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,这篇文章将为大家详细讲解有关怎么使用python爬取知乎热榜Top50数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、导入第三方库import urllib.
千家信息网最后更新 2024年11月14日怎么使用python爬取知乎热榜Top50数据

这篇文章将为大家详细讲解有关怎么使用python爬取知乎热榜Top50数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

1、导入第三方库

import urllib.request,urllib.error  #请求网页from bs4 import BeautifulSoup  # 解析数据import sqlite3  # 导入数据库import re # 正则表达式import time # 获取当前时间

2、程序的主函数

def main():    # 声明爬取网页    baseurl = "https://www.zhihu.com/hot"    # 爬取网页    datalist = getData(baseurl)    #保存数据    dbname = time.strftime("%Y-%m-%d", time.localtime()) #     dbpath = "zhihuTop50  " + dbname    saveData(datalist,dbpath)

3、正则表达式匹配数据

#正则表达式findlink = re.compile(r'(.*?)
') #问题排名findtitle = re.compile(r'

(.*?)

') #问题标题findintroduce = re.compile(r'
(.*?)
') #简要介绍findscore = re.compile(r'
(.*?)
') #热门评分findimg = re.compile(r'') #文章配图

4、程序运行结果

5、程序源代码

import urllib.request,urllib.errorfrom bs4 import BeautifulSoupimport sqlite3import reimport timedef main():    # 声明爬取网页    baseurl = "https://www.zhihu.com/hot"    # 爬取网页    datalist = getData(baseurl)    #保存数据    dbname = time.strftime("%Y-%m-%d", time.localtime())    dbpath = "zhihuTop50  " + dbname    saveData(datalist,dbpath)    print()#正则表达式findlink = re.compile(r'(.*?)
') #问题排名findtitle = re.compile(r'

(.*?)

') #问题标题findintroduce = re.compile(r'
(.*?)
') #简要介绍findscore = re.compile(r'
(.*?)
') #热门评分findimg = re.compile(r'') #文章配图def getData(baseurl): datalist = [] html = askURL(baseurl) # print(html) soup = BeautifulSoup(html,'html.parser') for item in soup.find_all('a',class_="css-hi1lih"): # print(item) data = [] item = str(item) Id = re.findall(findid,item) if(len(Id) == 0): Id = re.findall(r'
(.*?)
',item)[0] else: Id = Id[0] data.append(Id) # print(Id) Link = re.findall(findlink,item)[0] data.append(Link) # print(Link) Title = re.findall(findtitle,item)[0] data.append(Title) # print(Title) Introduce = re.findall(findintroduce,item) if(len(Introduce) == 0): Introduce = " " else:Introduce = Introduce[0] data.append(Introduce) # print(Introduce) Score = re.findall(findscore,item)[0] data.append(Score) # print(Score) Img = re.findall(findimg,item) if (len(Img) == 0): Img = " " else: Img = Img[0] data.append(Img) # print(Img) datalist.append(data) return datalistdef askURL(baseurl): # 设置请求头 head = { # "User-Agent": "Mozilla/5.0 (Windows NT 10.0;Win64;x64) AppleWebKit/537.36(KHTML, likeGecko) Chrome/80.0.3987.163Safari/537.36" "User-Agent": "Mozilla / 5.0(iPhone;CPUiPhoneOS13_2_3likeMacOSX) AppleWebKit / 605.1.15(KHTML, likeGecko) Version / 13.0.3Mobile / 15E148Safari / 604.1" } request = urllib.request.Request(baseurl, headers=head) html = "" try: response = urllib.request.urlopen(request) html = response.read().decode("utf-8") # print(html) except urllib.error.URLError as e: if hasattr(e, "code"): print(e.code) if hasattr(e, "reason"): print(e.reason) return html print()def saveData(datalist,dbpath): init_db(dbpath) conn = sqlite3.connect(dbpath) cur = conn.cursor() for data in datalist: sql = ''' insert into Top50( id,info_link,title,introduce,score,img) values("%s","%s","%s","%s","%s","%s")'''%(data[0],data[1],data[2],data[3],data[4],data[5]) print(sql) cur.execute(sql) conn.commit() cur.close() conn.close()def init_db(dbpath): sql = ''' create table Top50 ( id integer primary key autoincrement, info_link text, title text, introduce text, score text, img text ) ''' conn = sqlite3.connect(dbpath) cursor = conn.cursor() cursor.execute(sql) conn.commit() conn.close()if __name__ =="__main__": main()

关于"怎么使用python爬取知乎热榜Top50数据"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

数据 问题 网页 正则 表达式 文章 程序 篇文章 热门 更多 标题 简要 链接 评分 不错 实用 内容 函数 数据库 时间 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网站数据库版本能随便改吗 查询数据库为啥加上反单引号 汽修数据库软件 网络安全问题肌肤屏障 哈利波特俩个服务器可以一起玩吗 康明斯与软件开发 为啥学软件开发 钢铁企业的软件开发岗位好吗 常用ftp服务器 切实提高网络安全防范技能 信息网络安全回报 socket 服务器 2019两会期间网络安全 一次事务开启几个数据库连接 服务器部署svn与管理使用 网络安全金融主题日活动 江苏媒体网络技术服务成本 网络安全学院 武汉大学 自贡浩海软件开发公司 腾讯网络安全厉害吗 济南市浪潮服务器经销电话多少 上杭县大唐网络技术服务部 我的世界玩家服务器有趣的小游戏 服务器网卡不好用怎么办 数据库如何筛选字段重复数据 方舟服务器管理密码怎么用 广电网络安全培训机构 软件开发参与者保密 如何理解和防范网络安全心得 北京 网络安全功维
0