From 153e6891a0d248fa9b37ee5262003b1da87d938a Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Tue, 16 Apr 2024 21:32:28 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86=E6=94=AF=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=86=E6=94=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/SpyderController_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index f38f225..7c534a0 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -9,4 +9,4 @@ class TestSpyderController: print("testing SpyderController.main") lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) - print(123) \ No newline at end of file + # \ No newline at end of file From 725acee6df2a474693e021d16a58af8fe99e18ad Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Tue, 16 Apr 2024 21:33:51 +0800 Subject: [PATCH 02/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86=E6=94=AF=20?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E5=88=86=E6=94=AF=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/SpyderController_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index 7c534a0..e1186c7 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -9,4 +9,4 @@ class TestSpyderController: print("testing SpyderController.main") lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) - # \ No newline at end of file + #12 \ No newline at end of file From 4edeb66276cca966fa3a3e7b5e0b137c455593e4 Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Tue, 16 Apr 2024 21:34:26 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/SpyderController_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index e1186c7..cf9cfd2 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -9,4 +9,4 @@ class TestSpyderController: print("testing SpyderController.main") lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) - #12 \ No newline at end of file + #123 \ No newline at end of file From eaa6f787947b5cd0bd5e162d1c0c8626259526ee Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Mon, 22 Apr 2024 16:41:46 +0800 Subject: [PATCH 04/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test/SpyderController_test.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index cf9cfd2..87dc99f 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -9,4 +9,4 @@ class TestSpyderController: print("testing SpyderController.main") lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) - #123 \ No newline at end of file + # assert len(lst) == 999 From d5aca1ab7135296f4a6144a163f357d47e9d5796 Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Thu, 25 Apr 2024 19:30:13 +0800 Subject: [PATCH 05/10] =?UTF-8?q?=E5=B7=B2=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/SpyderController.py | 120 ++++++++++++++++++++++++++++++++- service/CsvService.py | 16 ++++- test/SpyderController_test.py | 11 +++ 3 files changed, 145 insertions(+), 2 deletions(-) diff --git a/controller/SpyderController.py b/controller/SpyderController.py index 012a320..a0d4314 100644 --- a/controller/SpyderController.py +++ b/controller/SpyderController.py @@ -1,5 +1,15 @@ +import threading +import time +import datetime +import csv +import json +import requests +from lxml import etree + + class SpyderController: - def getBilibiliVideoList(self,videoCount,threadCount,waitTime): + # Bilibili视频爬虫控制器,打开网页,爬取BilibiliVideo.py中的数据,将其下载下来,保存为csv文件 + def getBilibiliVideoList(self, videoCount, threadCount, waitTime): """ 整个爬虫的调用程序 :param videoCount: 爬取的视频数量,若不限制可设置为999 @@ -7,3 +17,111 @@ class SpyderController: :param waitTime:float: 每个线程的等待时间,单位秒(避免爬取过快) :return: list[BilibiliVideo] 返回处理完成后的videoList """ + if videoCount < threadCount: + threadCount = videoCount + if videoCount > 20: + videoCount = 20 + url = "https://api.bilibili.com/x/web-interface/ranking/v2?" + headers = { + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' + } + #f = open("file_3.csv", "a", encoding="UTF-8", newline="") + #csv_writer = csv.writer(f) + + rank_text = requests.get(url=url, headers=headers).text + # 将含有"万"的数据转换为数字 + def crawl_data(start_index, end_index): + def convert_to_number(lst): + result = [] + for item in lst: + if '万' in item: + number = int(float(item.replace('万', '')) * 10000) + result.append(str(number)) + else: + result.append(item) + return result + + # url = "https://api.bilibili.com/x/web-interface/ranking/v2?" + # headers = { + # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' + # } + f = open("file_3.csv", "a", encoding="UTF-8", newline="") + csv_writer = csv.writer(f) + # + # rank_text = requests.get(url=url, headers=headers).text + for i in range(start_index, end_index): + parsed_data = json.loads(rank_text) + aid = str(parsed_data["data"]["list"][i]["aid"]) + print(aid) + + bvId = [str(parsed_data['data']['list'][i]['bvid'])] + topNo = [str(i+1)] + + video_url = "https://www.bilibili.com/video/av" + aid + "/?" + video_text = requests.get(url=video_url, headers=headers).text + tree = etree.HTML(video_text) + #print(video_text) + title = tree.xpath('//div[@class="video-info-title-inner"]//text()') + uploadTime = [str(parsed_data["data"]["list"][i]["ctime"])] + viewCount = tree.xpath('//div[@class="view item"]/div/text()') + likeCount = tree.xpath('//div[@class="video-like video-toolbar-left-item"]/span/text()') + coinCount = tree.xpath('//div[@class="video-coin video-toolbar-left-item"]/span/text()') + favoriteCount = tree.xpath('//div[@class="video-fav video-toolbar-left-item"]/span/text()') + bulletCount = tree.xpath('//div[@class="dm-text"]/text()') + creatorFanCount = tree.xpath('//div[@class="default-btn follow-btn b-gz not-follow"]/span/text()') + viewCount = convert_to_number(viewCount) + likeCount = convert_to_number(likeCount) + coinCount = convert_to_number(coinCount) + favoriteCount = convert_to_number(favoriteCount) + bulletCount = convert_to_number(bulletCount) + # match = re.search(r'\d+', text) + # number = match.group() + followers_str = creatorFanCount[0].strip().split()[1] + followers_num = float(followers_str.replace('万', '')) * 10000 + # 转化为整数 + followers_num = int(followers_num) + creatorFanCount = [str(followers_num)] + commentCount = [str(parsed_data['data']['list'][i]['stat']['reply'])] + creatorId = [str(parsed_data['data']['list'][i]['owner']['mid'])] + creatorName = [str(parsed_data['data']['list'][i]['owner']['name'])] + bulletCount = convert_to_number(bulletCount) + + #up_url = "https://space.bilibili.com/" + creatorId[0] + "?" + up_url = "https://space.bilibili.com/401742377?spm_id_from=333.788.0.0" + up_text = requests.get(url=up_url, headers=headers).text + tree = etree.HTML(up_text) + #print(up_text) + + all_data = topNo + bvId + title + [ + video_url] + uploadTime + viewCount + likeCount + coinCount + favoriteCount + bulletCount + commentCount + creatorId + creatorName + creatorFanCount + csv_writer.writerow(all_data) + all_data_list = [] + all_data_list = all_data_list + [topNo, bvId, title, [video_url], uploadTime, viewCount, likeCount, coinCount, favoriteCount, bulletCount, commentCount, creatorId, creatorName, creatorFanCount] + f.close() + return all_data_list + + thread_list = [] + video_per_thread = videoCount // threadCount + + for i in range(threadCount): + start_index = i * video_per_thread + end_index = (i + 1) * video_per_thread if (i + 1) < threadCount else videoCount + thread = threading.Thread(target=crawl_data, args=(start_index, end_index)) + thread_list.append(thread) + thread.start() + time.sleep(waitTime) + + for thread in thread_list: + thread.join() + + +if __name__ == '__main__': + f = open("file_3.csv", "w", encoding="UTF-8", newline="") + csv_writer = csv.writer(f) + csv_writer.writerow( + ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", + "bulletCount", "commentCount", + "creatorId", "creatorName", "creatorFanCount"]) + f.close() + spyderController = SpyderController() + spyderController.getBilibiliVideoList(6, 2, 0.3) # 设置线程数为2 \ No newline at end of file diff --git a/service/CsvService.py b/service/CsvService.py index 8df1c85..f8eaec3 100644 --- a/service/CsvService.py +++ b/service/CsvService.py @@ -1,7 +1,21 @@ from IFileService import IFileService from entity.BilibiliVideo import BilibiliVideo - +from controller.SpyderController import SpyderController +import csv class CsvService(IFileService): def save(self, filePath, videoList: list[BilibiliVideo]): + f = open("file_3.csv", "w", encoding="UTF-8", newline="") + csv_writer = csv.writer(f) + csv_writer.writerow( + ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", + "bulletCount", "commentCount", + "creatorId", "creatorName", "creatorFanCount"]) + for video in videoList: + csv_writer.writerow( + [video.topNo, video.bvId, video.title, video.url, video.uploadTimeText, video.viewCount, video.likeCount, + video.coinCount, video.favoriteCount, video.bulletCount, video.commentCount, + video.creatorId, video.creatorName, video.creatorFanCount]) + f.close() raise NotImplementedError + diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index 87dc99f..31f580c 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -2,11 +2,22 @@ from controller.SpyderController import SpyderController spyderController = SpyderController() +import csv class TestSpyderController: def test_main(self): # for debug: print("testing SpyderController.main") + spyderController = SpyderController() lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) # assert len(lst) == 999 + # f = open("file_3.csv", "w", encoding="UTF-8", newline="") + # csv_writer = csv.writer(f) + # csv_writer.writerow( + # ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", + # "bulletCount", "commentCount", + # "creatorId", "creatorName", "creatorFanCount"]) + # f.close() + # spyderController = SpyderController() + # spyderController.getBilibiliVideoList(6, 2, 0.3) # 设置线程数为2 From 4f7afc2b5c83aaa7dd727f4ce2fd63112693bfbb Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Thu, 25 Apr 2024 20:41:26 +0800 Subject: [PATCH 06/10] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=BA=86=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E7=B1=BB=EF=BC=8C=E5=AF=B9=E4=BA=8E=E4=B8=A4=E4=B8=AA?= =?UTF-8?q?up=E5=8F=8A=E4=BB=A5=E4=B8=8A=E7=9A=84=E8=A7=86=E9=A2=91?= =?UTF-8?q?=EF=BC=8C=E6=8A=8A=E7=B2=89=E4=B8=9D=E6=95=B0=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E4=B8=BA1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/SpyderController.py | 38 ++++++++++++++++++++++------------ controller/UIController.py | 5 +++-- service/CsvService.py | 2 +- 3 files changed, 29 insertions(+), 16 deletions(-) diff --git a/controller/SpyderController.py b/controller/SpyderController.py index a0d4314..9fb7797 100644 --- a/controller/SpyderController.py +++ b/controller/SpyderController.py @@ -6,6 +6,8 @@ import json import requests from lxml import etree +from entity.BilibiliVideo import BilibiliVideo + class SpyderController: # Bilibili视频爬虫控制器,打开网页,爬取BilibiliVideo.py中的数据,将其下载下来,保存为csv文件 @@ -17,6 +19,10 @@ class SpyderController: :param waitTime:float: 每个线程的等待时间,单位秒(避免爬取过快) :return: list[BilibiliVideo] 返回处理完成后的videoList """ + all_data_list = [] + videoCount = int(videoCount) + threadCount = int(threadCount) + waitTime = float(waitTime) if videoCount < threadCount: threadCount = videoCount if videoCount > 20: @@ -76,11 +82,14 @@ class SpyderController: bulletCount = convert_to_number(bulletCount) # match = re.search(r'\d+', text) # number = match.group() - followers_str = creatorFanCount[0].strip().split()[1] - followers_num = float(followers_str.replace('万', '')) * 10000 - # 转化为整数 - followers_num = int(followers_num) - creatorFanCount = [str(followers_num)] + if not creatorFanCount: + creatorFanCount = [str(1)] + else : + followers_str = creatorFanCount[0].strip().split()[1] + followers_num = float(followers_str.replace('万', '')) * 10000 + # 转化为整数 + followers_num = int(followers_num) + creatorFanCount = [str(followers_num)] commentCount = [str(parsed_data['data']['list'][i]['stat']['reply'])] creatorId = [str(parsed_data['data']['list'][i]['owner']['mid'])] creatorName = [str(parsed_data['data']['list'][i]['owner']['name'])] @@ -91,13 +100,16 @@ class SpyderController: up_text = requests.get(url=up_url, headers=headers).text tree = etree.HTML(up_text) #print(up_text) + all_data = bvId + title + [url] + uploadTime + topNo + viewCount + likeCount + coinCount + favoriteCount + bulletCount + commentCount + creatorId + creatorName + creatorFanCount - all_data = topNo + bvId + title + [ - video_url] + uploadTime + viewCount + likeCount + coinCount + favoriteCount + bulletCount + commentCount + creatorId + creatorName + creatorFanCount csv_writer.writerow(all_data) - all_data_list = [] - all_data_list = all_data_list + [topNo, bvId, title, [video_url], uploadTime, viewCount, likeCount, coinCount, favoriteCount, bulletCount, commentCount, creatorId, creatorName, creatorFanCount] + + # all_data_list = all_data_list + [topNo, bvId, title, [video_url], uploadTime, viewCount, likeCount, coinCount, favoriteCount, bulletCount, commentCount, creatorId, creatorName, creatorFanCount] + video = BilibiliVideo(bvId[0], title[0], url, int(uploadTime[0]), int(topNo[0]), int(viewCount[0]), int(likeCount[0]), int(coinCount[0]), + int(favoriteCount[0]), int(commentCount[0]), int(bulletCount[0]), creatorId[0], creatorName[0], int(creatorFanCount[0])) + all_data_list.append(video) f.close() + # print(all_data_list) return all_data_list thread_list = [] @@ -113,15 +125,15 @@ class SpyderController: for thread in thread_list: thread.join() - + print(all_data_list) + return all_data_list if __name__ == '__main__': f = open("file_3.csv", "w", encoding="UTF-8", newline="") csv_writer = csv.writer(f) csv_writer.writerow( - ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", - "bulletCount", "commentCount", - "creatorId", "creatorName", "creatorFanCount"]) + ["bvId", "title", "url", "uploadTime", "topNo", "viewCount", "likeCount", "coinCount", + "favoriteCount", "commentCount", "bulletCount", "creatorId", "creatorName", "creatorFanCount"]) f.close() spyderController = SpyderController() spyderController.getBilibiliVideoList(6, 2, 0.3) # 设置线程数为2 \ No newline at end of file diff --git a/controller/UIController.py b/controller/UIController.py index 6d0f557..284ff6b 100644 --- a/controller/UIController.py +++ b/controller/UIController.py @@ -39,9 +39,10 @@ class UIController: waitTime=entry3.get() #创建 SpyderController对象调用其函数 SpyderController=SC.SpyderController() - global scRuslt_data - scRuslt_data=SpyderController.getBilibiliVideoList(videoCount,threadCount,waitTime) + # global scRuslt_data + self.scRuslt_data=SpyderController.getBilibiliVideoList(videoCount,threadCount,waitTime) print("爬取完成") + # print(scRuslt_data) diff --git a/service/CsvService.py b/service/CsvService.py index 4bcc691..5e26627 100644 --- a/service/CsvService.py +++ b/service/CsvService.py @@ -17,5 +17,5 @@ class CsvService(IFileService): video.coinCount, video.favoriteCount, video.bulletCount, video.commentCount, video.creatorId, video.creatorName, video.creatorFanCount]) f.close() - raise NotImplementedError + # raise NotImplementedError From 730848d455316d39033ff3ebea94f4f9eb9130dc Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Thu, 25 Apr 2024 20:46:07 +0800 Subject: [PATCH 07/10] =?UTF-8?q?=E6=94=B9=E4=BA=86=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- service/CsvService.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/service/CsvService.py b/service/CsvService.py index 5e26627..ee5ed7e 100644 --- a/service/CsvService.py +++ b/service/CsvService.py @@ -5,7 +5,7 @@ import csv class CsvService(IFileService): def save(self, filePath, videoList: list[BilibiliVideo]): - f = open("file_3.csv", "w", encoding="UTF-8", newline="") + f = open(filePath+".csv", "w", encoding="UTF-8", newline="") csv_writer = csv.writer(f) csv_writer.writerow( ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", From f8ca53cde228662f698a8f66d00db4e7f3795d2d Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Thu, 25 Apr 2024 20:50:36 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E5=B0=86=E6=9C=80=E5=A4=A7=E7=88=AC?= =?UTF-8?q?=E5=8F=96=E6=95=B0=E9=87=8F=E6=94=B9=E4=B8=BA100?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/SpyderController.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/controller/SpyderController.py b/controller/SpyderController.py index 9fb7797..e543d73 100644 --- a/controller/SpyderController.py +++ b/controller/SpyderController.py @@ -25,8 +25,8 @@ class SpyderController: waitTime = float(waitTime) if videoCount < threadCount: threadCount = videoCount - if videoCount > 20: - videoCount = 20 + if videoCount > 100: + videoCount = 100 url = "https://api.bilibili.com/x/web-interface/ranking/v2?" headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' From 3de235526a345674061438fb3e2a25233e6c10bb Mon Sep 17 00:00:00 2001 From: lfk <2668413029@qq.com> Date: Thu, 25 Apr 2024 20:59:08 +0800 Subject: [PATCH 09/10] =?UTF-8?q?=E7=BC=96=E7=A0=81=E6=A0=BC=E5=BC=8F?= =?UTF-8?q?=E6=94=B9=E4=B8=BAGB18030?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/SpyderController.py | 4 ++-- service/CsvService.py | 2 +- test/SpyderController_test.py | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/controller/SpyderController.py b/controller/SpyderController.py index e543d73..dcdae53 100644 --- a/controller/SpyderController.py +++ b/controller/SpyderController.py @@ -51,7 +51,7 @@ class SpyderController: # headers = { # 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:125.0) Gecko/20100101 Firefox/125.0' # } - f = open("file_3.csv", "a", encoding="UTF-8", newline="") + f = open("file_3.csv", "a", encoding="GB18030", newline="") csv_writer = csv.writer(f) # # rank_text = requests.get(url=url, headers=headers).text @@ -129,7 +129,7 @@ class SpyderController: return all_data_list if __name__ == '__main__': - f = open("file_3.csv", "w", encoding="UTF-8", newline="") + f = open("file_3.csv", "w", encoding="GB18030", newline="") csv_writer = csv.writer(f) csv_writer.writerow( ["bvId", "title", "url", "uploadTime", "topNo", "viewCount", "likeCount", "coinCount", diff --git a/service/CsvService.py b/service/CsvService.py index ee5ed7e..da73323 100644 --- a/service/CsvService.py +++ b/service/CsvService.py @@ -5,7 +5,7 @@ import csv class CsvService(IFileService): def save(self, filePath, videoList: list[BilibiliVideo]): - f = open(filePath+".csv", "w", encoding="UTF-8", newline="") + f = open(filePath+".csv", "w", encoding="GB18030", newline="") csv_writer = csv.writer(f) csv_writer.writerow( ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", diff --git a/test/SpyderController_test.py b/test/SpyderController_test.py index 31f580c..ef44f08 100644 --- a/test/SpyderController_test.py +++ b/test/SpyderController_test.py @@ -12,7 +12,7 @@ class TestSpyderController: lst = spyderController.getBilibiliVideoList(999, 1, 0.3) print(lst) # assert len(lst) == 999 - # f = open("file_3.csv", "w", encoding="UTF-8", newline="") + # f = open("file_3.csv", "w", encoding="GB18030", newline="") # csv_writer = csv.writer(f) # csv_writer.writerow( # ["topNo", "bvId", "title", "url", "uploadTime", "viewCount", "likeCount", "coinCount", "favoriteCount", From 5d420e9ab55753c171f8f9f01ed6ac75bcb5d489 Mon Sep 17 00:00:00 2001 From: Timmoc Date: Thu, 25 Apr 2024 21:34:49 +0800 Subject: [PATCH 10/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E9=83=A8=E5=88=86?= =?UTF-8?q?=E5=B0=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- controller/SpyderController.py | 2 +- controller/UIController.py | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/controller/SpyderController.py b/controller/SpyderController.py index dcdae53..2a1d2ee 100644 --- a/controller/SpyderController.py +++ b/controller/SpyderController.py @@ -10,7 +10,7 @@ from entity.BilibiliVideo import BilibiliVideo class SpyderController: - # Bilibili视频爬虫控制器,打开网页,爬取BilibiliVideo.py中的数据,将其下载下来,保存为csv文件 + # Bilibili视频爬虫控制器,打开网页,爬取符合BilibiliVideo.py中的数据,将其下载下来,保存为csv文件 def getBilibiliVideoList(self, videoCount, threadCount, waitTime): """ 整个爬虫的调用程序 diff --git a/controller/UIController.py b/controller/UIController.py index 284ff6b..e94d3cb 100644 --- a/controller/UIController.py +++ b/controller/UIController.py @@ -20,9 +20,9 @@ class UIController: print("zzr1") #一些属性 ##csv文件路径 - csv_path=".\csv_file" + csv_path="./csv_file" ## - excel_path=".\excel_file" + excel_path="./excel_file" # 创建主窗口 root = tk.Tk() root.title("Python UI") @@ -113,7 +113,7 @@ class UIController: button_stop.grid(row=4, column=1,sticky=tk.W) button_save_to_excel = tk.Button(root, text="save to excel", command=button_save_to_exce_click) button_save_to_excel.grid(row=5, column=1, sticky=tk.W) - button_save_to_csv = tk.Button(root, text="save to excel", command=button_save_to_csv_click) + button_save_to_csv = tk.Button(root, text="save to csv", command=button_save_to_csv_click) button_save_to_csv.grid(row=6, column=1,sticky=tk.W) # 创建一个带展示框 tree = ttk.Treeview(root, columns=("bvid", "title","url","upload","topNo","viewCount","likeCount","coinCount","favorite","commentCount","bolletCount","creatorld","creatorName","createFanCount"))