【程式碼教學】追蹤自己 Vocus文章每日流量,第二版 1027

【程式碼教學】追蹤自己 Vocus文章每日流量,第二版 1027

更新於 發佈於 閱讀時間約 6 分鐘


剛剛發現之前的程式碼已經不能使用了,我想可能是因為html結構有所改變,另外也想順便處理一下數字如果是含有"K"的數字時,順便轉化一下,時間有限,所以想知道來龍去脈請看下面文章。


【教學】如何用程式碼追蹤Vocus文章每日流量?第一版

【教學】如何用程式碼追蹤Vocus文章每日流量?第一版

https://vocus.cc/article/6530d297fd89780001a7fe33

raw-image


程式碼第二版 1027

線上 colab版本我之後會再修改,以下先給大家我修改後的程式碼。因為時間有限我只改了內容作品管理的版本,另外我將想法寫在結論


內容作品管理版本:


import csv
from bs4 import BeautifulSoup
from datetime import datetime

# 獲取當前日期和時間
current_datetime = datetime.now()
formatted_datetime = current_datetime.strftime("%Y%m%d%H%M")

# 輔助函數:將數字"K"格式的瀏覽量轉換為整數
def parse_views(views_str):
if 'K' in views_str:
return int(float(views_str.replace('K', '')) * 1000)
return int(views_str)

# 讀取HTML文件
with open('row20231027.html', 'r', encoding='utf-8') as file:
html = file.read()

# 創建Beautiful Soup對象
soup = BeautifulSoup(html, 'html.parser')

# 尋找文章卡片元素
articles = soup.find_all('div', class_='articleManageCard__CardWrapper-sc-1i8sb3r-0 eNoxEh')

# 初始化儲存數據的列表
data = []

# 遍歷文章卡片元素
for article in articles:
# 提取標題
title_element = article.find('div', class_='articleManageCard__ArticleTitle-sc-1i8sb3r-6 daceHB')
if title_element:
title = title_element.find('a').text.strip()
link = title_element.find('a')['href']
else:
title = "無標題"
link = "無連結"

# 提取愛心數
like_element = article.find('div', class_='iconCount__IconCountWrapper-sc-otd9xy-0 dWpZNq')
like = like_element.find('span', class_='iconCount__Count-sc-otd9xy-1 ipDLhO').text.strip() if like_element else 0

# 提取瀏覽量
view_element = article.find_all('div', class_='iconCount__IconCountWrapper-sc-otd9xy-0 dWpZNq')
view_span = view_element[-1].find('span', class_='iconCount__Count-sc-otd9xy-1 ipDLhO') if view_element else None
view = parse_views(view_span.text.strip()) if view_span else 0

# 添加建立時間列
created_time = current_datetime.strftime("%Y-%m-%d-%H-%M")

# 將提取的數據添加到列表
data.append([title, link, like, view, created_time])

# 將數據保存到CSV文件,使用帶有當前日期和時間的文件名
csv_filename = f"{formatted_datetime}_articles.csv"
with open(csv_filename, 'w', newline='', encoding='utf-8') as csv_file:
writer = csv.writer(csv_file)

# 添加CSV文件標題行
writer.writerow(["文章標題", "文章連結", "愛心數", "瀏覽量", "建立時間"])

# 寫入數據行
for row in data:
writer.writerow(row)

print(f"數據已保存到 {csv_filename} 文件。")





結論

寫這種程式碼最有趣的地方就在於你需要根據網路架構更新修改你的版本。同時我也在構思要將這個服務改成數位商品的方式,分享給有需要的朋友,如果有興趣的人,或是希望新增什麼樣服務的格友,歡迎大家在下方留言或是透過ig 聯絡我

如果喜歡我的程式碼,也歡迎大家多多贊助我,支持我的創作

我是凱文馬拉穆,我們下次見

我的贊助連結


avatar-img
凱文馬拉穆の 雪橇犬星球
33.3K會員
448內容數
本專題將探討科技在投資領域的應用。我們將介紹人工智能、大數據分析和自動化投資工具,並解釋如何利用這些技術來優化投資策略和增加投資回報。透過了解智能投資的趨勢和方法,讀者可以更加精準地進行投資決策,提升投資效率和成果。我們也會介紹不同的投資工具和策略,解釋風險與回報的關係,並提供基本的投資原則和技巧。
留言
avatar-img
留言分享你的想法!
現代人生活步調緊湊,分心的事物太多,難以專注。本文作者分享自身經驗,說明如何打造「無幹擾區間」,透過刻意安排時間和空間,排除幹擾,提升專注力,找回內在平靜。文中提及番茄工作法、學術研究佐證,並提供打造無幹擾區間的實用方法,鼓勵讀者嘗試,找回專注與平靜。
探討正面與負面情緒的平衡,指出負面情緒並非敵人,而是成長的助力,並提供五個重新理解情緒價值的方法,幫助讀者在生活中找到平衡,避免過度樂觀或沉溺負面情緒。
本文利用赫茲伯格的雙因素理論,分析傳統辦公室工作、遠距工作和數位遊牧三種工作型態的優劣勢,幫助讀者瞭解何者更適合自身需求,並強調在職涯發展中嘗試不同工作型態的重要性。
現代人生活步調緊湊,分心的事物太多,難以專注。本文作者分享自身經驗,說明如何打造「無幹擾區間」,透過刻意安排時間和空間,排除幹擾,提升專注力,找回內在平靜。文中提及番茄工作法、學術研究佐證,並提供打造無幹擾區間的實用方法,鼓勵讀者嘗試,找回專注與平靜。
探討正面與負面情緒的平衡,指出負面情緒並非敵人,而是成長的助力,並提供五個重新理解情緒價值的方法,幫助讀者在生活中找到平衡,避免過度樂觀或沉溺負面情緒。
本文利用赫茲伯格的雙因素理論,分析傳統辦公室工作、遠距工作和數位遊牧三種工作型態的優劣勢,幫助讀者瞭解何者更適合自身需求,並強調在職涯發展中嘗試不同工作型態的重要性。
本篇參與的主題活動
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄
先前麥克買了在預算及性能方面都十分複合需求的NXTPAPER 11平板,但拿到辦公室使用後便發現因為時不時有簡報需求,主機本身不支援有線視訊輸出實在是非常不方便,因又開始尋找新歡。最終麥克選擇了算是還滿熟悉的品牌小米旗下的小米平板6,以下為麥克這一個月下來的使用心得。
從預計的十月底出貨經過重重波折,Pubu自家開發的10寸彩色閱讀器Pubook Pro終於是送到第一批集資者手中了。究竟這台閱讀器有沒有本事撼動目前的電子紙閱讀器市場?有達到集資時承諾的各項功能嗎?且讓身為首批集資者之一的麥克跟大家談談收到主機後使用數天的感想。
Steam Deck 迎來大改版,最重要的更新就是換成 OLED 螢幕。使用 OLED 螢幕帶來更好看的顏色,大小還小幅提升到 7.4 吋。關係續航力的電池也從 40 瓦小時升級到 50 瓦小時, 3A 大作都可以多玩一小時呢!這麼香的更新,怎麼不給他買下去呢 😄