一、背景介紹
你好,我是@馬哥python說,一名10年程序猿。
最近我用python開發(fā)了一個GUI桌面軟件,目的是爬取相關YouTube博主的各種信息,字段包括:
視頻標題、視頻鏈接、博主名稱、博主鏈接、國家、telegram鏈接、whatsapp鏈接、twitter鏈接、facebook鏈接、instagram鏈接。
以近期某熱門事件為例。
演示視頻:
用python爬YouTube博主,并開發(fā)成GUI桌面軟件
運行截圖:
爬取數(shù)據(jù)截圖:
實現(xiàn)思路:
通過按指定關鍵詞搜索視頻,通過視頻進入博主的主頁簡介,爬取博主的各種聯(lián)系信息。
并把源碼封裝成exe文件,方便沒有python環(huán)境,或者不懂技術的人使用它。
二、代碼講解
2.1 爬蟲
本爬蟲是通過selenium模擬手工搜索的過程,所以需要提前安裝好chrome瀏覽器和chromedriver驅動。
安裝chrome瀏覽器和chromedriver驅動的過程,請自行解決,不再贅述。
把chromedriver放到exe文件的旁邊(同級目錄下)即可。
展示部分核心代碼:
初始化csv文件:
def init(self):
with open(f'{self.query}.csv', 'a', newline='', encoding='utf_8_sig') as f:
writer = csv.writer(f)
writer.writerow(['視頻標題', '視頻鏈接', '博主名稱', '博主鏈接', '國家', 'telegram鏈接', 'whatsapp鏈接', 'twitter鏈接', 'facebook鏈接', 'instagram鏈接'])
爬博主信息:
# 先解析出所有鏈接
contact_url_els = self.browser.find_elements(By.XPATH, '//*[@id="link-list-container"]/a')
for j in contact_url_els:
url = j.get_attribute('href')
if "t.me" in url: # 電報鏈接
de_url = unquote(url)
de_url_dict = parse_qs(urlparse(de_url).query)
url = de_url_dict.get("q")[0]
telegram_url = url
if "wa.link" in url or "api.whatsapp.com" in url: # whatsapp鏈接
de_url = unquote(url)
de_url_dict = parse_qs(urlparse(de_url).query)
url = de_url_dict.get("q")[0]
whatsapp_url = url
if "twitter.com" in url: # twitter鏈接
de_url = unquote(url)
de_url_dict = parse_qs(urlparse(de_url).query)
url = de_url_dict.get("q")[0]
twitter_url = url
if "facebook.com" in url: # facebook鏈接
de_url = unquote(url)
de_url_dict = parse_qs(urlparse(de_url).query)
url = de_url_dict.get("q")[0]
facebook_url = url
if "instagram.com" in url: # instagram鏈接
de_url = unquote(url)
de_url_dict = parse_qs(urlparse(de_url).query)
url = de_url_dict.get("q")[0]
instagram_url = url
2.2 tkinter界面
界面部分代碼:
# 創(chuàng)建主窗口
root = tk.Tk()
root.title('YouTube爬蟲-定制化開發(fā) | 馬哥python說')
# 設置窗口大小
root.minsize(width=850, height=650)
show_list_Frame = tk.Frame(width=800, height=450) # 創(chuàng)建<消息列表分區(qū)>
show_list_Frame.pack_propagate(0)
show_list_Frame.place(x=30, y=120, anchor='nw') # 擺放位置
# 滾動條
scroll = tk.Scrollbar(show_list_Frame)
# 放到Y軸豎直方向
scroll.pack(side=tk.RIGHT, fill=tk.Y)
2.3 存日志
軟件運行過程中,會在同級目錄下生成logs文件夾,文件夾內會出現(xiàn)log文件,記錄下軟件在整個運行過程中的日志,方便長時間運行、無人值守,出現(xiàn)問題后的debug。
部分代碼:
class Log_week():
def get_logger(self):
self.logger = logging.getLogger(__name__)
# 日志格式
formatter = '[%(asctime)s-%(filename)s][%(funcName)s-%(lineno)d]--%(message)s'
# 日志級別
self.logger.setLevel(logging.DEBUG)
# 控制臺日志
sh = logging.StreamHandler()
log_formatter = logging.Formatter(formatter, datefmt='%Y-%m-%d %H:%M:%S')
# info日志文件名
info_file_name = time.strftime("%Y-%m-%d") + '.log'
# 將其保存到特定目錄,ap方法就是尋找項目根目錄,該方法博主前期已經(jīng)寫好。
case_dir = r'./logs/'
info_handler = TimedRotatingFileHandler(filename=case_dir + info_file_name,
when='MIDNIGHT',
interval=1,
backupCount=7,
encoding='utf-8')
self.logger.addHandler(sh)
sh.setFormatter(log_formatter)
self.logger.addHandler(info_handler)
info_handler.setFormatter(log_formatter)
return self.logger
三、軟件演示視頻
演示視頻: 【爬蟲演示】用python爬YouTube博主信息,并開發(fā)成GUI桌面軟件!
四、說明
附完整源碼:【GUI開發(fā)】用python爬YouTube博主信息,并開發(fā)成exe軟件!
我是 @馬哥python說,持續(xù)分享python源碼干貨中!文章來源:http://www.zghlxwxcb.cn/news/detail-692090.html
推薦閱讀:【爬蟲GUI】YouTube評論采集軟件,突破反爬,可無限爬??!文章來源地址http://www.zghlxwxcb.cn/news/detail-692090.html
到了這里,關于【GUI開發(fā)】用python爬YouTube博主信息,并開發(fā)成exe軟件的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!