怎么使用python爬取知乎热榜Top50数据
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,这篇文章将为大家详细讲解有关怎么使用python爬取知乎热榜Top50数据,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1、导入第三方库import urllib.
千家信息网最后更新 2025年02月02日怎么使用python爬取知乎热榜Top50数据
') #问题排名findtitle = re.compile(r'这篇文章将为大家详细讲解有关怎么使用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'(.*?)
(.*?)
') #问题标题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'(.*?)
(.*?)
') #问题标题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安全错误
数据库的锁怎样保障安全
access数据库查找姓名
青岛银蚂蚁互联网科技
中国台湾手机软件开发it技术
软件开发中的9大难题
网络安全大赛团队名
如何查看数据库的创建时间
广东汕尾学生 云服务器
互联网软件开发的发展
计算机网络技术基础问题
数据库表主要来源一是
三菱服务器al20
数据库怎么查最后10条
钢铁材料碳排放数据库
怎么做迪拜软件开发
吴江区一站式网络技术怎么样
数据库取系统时间
画饼充饥软件开发
诛仙3创世绮梦服务器合区
顺义软件开发公司电话
富阳九天网络技术有限公司
ibm服务器租用哪家好
cmd 管理员启动服务器
铜陵扫码洗车软件开发
监利县网络安全宣传
7网络安全视频
linux服务器管理命令
面试官软件开发
南通软件开发培训老师
画饼充饥软件开发
python操作oracle数据库