<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
import urllib.request,urllib.error #請求網頁 from bs4 import BeautifulSoup # 解析資料 import sqlite3 # 匯入資料庫 import re # 正規表示式 import time # 獲取當前時間
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)
#正規表示式 findlink = re.compile(r'<a class="css-hi1lih" href="(.*?)" rel="external nofollow" rel="external nofollow" ') #問題連結 findid = re.compile(r'<div class="css-blkmyu">(.*?)</div>') #問題排名 findtitle = re.compile(r'<h1 class="css-3yucnr">(.*?)</h1>') #問題標題 findintroduce = re.compile(r'<div class="css-1o6sw4j">(.*?)</div>') #簡要介紹 findscore = re.compile(r'<div class="css-1iqwfle">(.*?)</div>') #熱門評分 findimg = re.compile(r'<img class="css-uw6cz9" src="(.*?)"/>') #文章配圖
import urllib.request,urllib.error from bs4 import BeautifulSoup import sqlite3 import re import time 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) print() #正規表示式 findlink = re.compile(r'<a class="css-hi1lih" href="(.*?)" rel="external nofollow" rel="external nofollow" ') #問題連結 findid = re.compile(r'<div class="css-blkmyu">(.*?)</div>') #問題排名 findtitle = re.compile(r'<h1 class="css-3yucnr">(.*?)</h1>') #問題標題 findintroduce = re.compile(r'<div class="css-1o6sw4j">(.*?)</div>') #簡要介紹 findscore = re.compile(r'<div class="css-1iqwfle">(.*?)</div>') #熱門評分 findimg = re.compile(r'<img class="css-uw6cz9" src="(.*?)"/>') #文章配圖 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'<div class="css-mm8qdi">(.*?)</div>',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 datalist def 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資料的文章就介紹到這了,更多相關python 爬取知乎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45