2023年12月16日 星期六

文字檔有網頁開啟清單,用PYTHON程式,將網頁全數開啟,並找出特定字串,將其另存至文字檔中

情境說明:

PROMPT提示訊息下法:   (範例2) 

D:/HyperLinkSource.txt 此檔案內含連結位址,請用PYTHON寫程式,CHROME瀏覽器,開啟該文字檔案全數連結,並按任意鍵繼續瀏覽下個頁面


import webbrowser

# 读取文本文件中的链接
file_path = 'D:/HyperLinkSource.txt'

with open(file_path, 'r') as file:
    # 逐行读取链接
    for line in file:
        # 移除行尾的换行符
        url = line.strip()
        
        # 使用webbrowser模块打开链接
        webbrowser.open(url)
        
        # 等待用户按下任意键继续
        input("Press Enter to continue...")
         
 

 

PROMPT提示訊息下法:      (範例2) 

D:\HyperLinkSource.txt 此檔案內含連結位址,請用PYTHON寫一程式,運用requests與BeautifulSoup模組,以預設瀏覽器,開啟該文字檔案提供全數連結

,並請協助各自讀取每個連結之網頁內容後,將網頁內容中有包含  詳洽本公司: 開始 到  < 回訊息列表   間的字串值 將字串值取出至D:\BrowsingString.txt ,

該檔如存在請刪除,重新建檔,且該檔包含 該連結位址 及 網頁內容之特定字串,如找不到資料詳洽之特定字串,則用 找不到特定字串, 處理,並請接續處理下一筆連結之瀏覽檢視作業

import os
import requests
from bs4 import BeautifulSoup

# 讀取連結位址檔案
file_path = r'D:\HyperLinkSource.txt'
with open(file_path, 'r') as file:
    links = file.readlines()

# 刪除 output_file 若存在
output_file = r'D:\BrowsingString.txt'
if os.path.exists(output_file):
    os.remove(output_file)

# 開啟瀏覽器並處理每個連結
for link in links:
    link = link.strip()  # 移除連結前後的空白字符
    try:
        # 使用requests獲取網頁內容
        response = requests.get(link)
        response.raise_for_status()  # 確保獲取網頁成功
        webpage_content = response.text

        # 使用BeautifulSoup解析網頁內容
        soup = BeautifulSoup(webpage_content, 'html.parser')

        # 尋找特定字串值
        start_marker = '詳洽本公司:'
        end_marker = '< 回訊息列表'
        start_index = webpage_content.find(start_marker)
        end_index = webpage_content.find(end_marker)

        # 提取特定字串值
        if start_index != -1 and end_index != -1:
            substring = webpage_content[start_index + len(start_marker):end_index].strip()
        else:
            substring = '@@ 找不到特定字串'

        # 將特定字串值寫入檔案
        with open(output_file, 'a', encoding='utf-8') as file:
            file.write(f'{link}\n')
            file.write(f'{substring}\n\n\n')
    except requests.exceptions.RequestException as e:
        print(f'無法獲取連結:{link}')
        print(f'錯誤訊息:{e}')

後記:取出的網頁資訊,仍保留許多HTML語法資訊,故如要估資料再次運用,可能此方法不是最佳方式,只是測試PYTHON程式,捉取網頁內容特定2關鍵字,將其抽取出至另1個文字檔D:\BrowsingString.txt

EXCEL 同產品名稱 ,銷售金額 ,用VBA程式查詢


EXCEL表中,分別有訂單編號、訂購日期、產品名稱、單價、數量、小計等欄位,
想瞭解下表中  同一產品名稱 ,其銷售一共多少錢?


   A          B            C         D       E        F   
訂單編號    訂購日期    產品名稱    單價    數量    小計
A0001        112/5/1        鉛筆           20        6        120
A0002        112/6/6        原子筆        30        2        60
A0003        112/7/7        剪刀           46        2        92
A0004        112/6/8        美工刀        40        2        80
A0005        112/8/9        鉛筆           20        4        80
A0006        112/6/10     橡皮擦        15        2        30
A0007        112/9/9        精美提袋    80        3        240
A0008        112/9/12      原子筆        30        4        120
A0009        112/10/13    剪刀           46        2        92
A0010        112/11/15    鉛筆           20        2        40


藉由AI(ChatGPT)協助將同一產品名稱,歸納成同一群組後,彙總成單筆銷售數量。
PROMPT提示訊息下法:
EXCEL表中,有訂單編號、訂購日期、產品名稱、單價、數量、小計欄,請以EXCEL VBA程式,將相同 產品名稱 進行排序,歸納為同一群組,並將 相同產品名稱 彙集成1筆 單價及數量,
結果分別存放至    I2欄為產品名稱 J2欄為單價 K2欄為相同品項數量加總


Sub 彙集產品資料()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    Dim productName As String
    Dim price As Double
    Dim quantity As Long
    Dim summaryRow As Long

    ' 設定工作表,這裡假設資料在第一個工作表
    Set ws = ThisWorkbook.Sheets(1)

    ' 找到最後一行
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

    ' 初始化目標列
    summaryRow = 2 ' 假設第一行是標題,從第二行開始

    ' 按照產品名稱進行排序
    ws.Sort.SortFields.Clear
    ws.Sort.SortFields.Add Key:=ws.Range("C2:C" & lastRow), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ws.Sort
        .SetRange ws.Range("A1:F" & lastRow)
        .Header = xlYes ' 假設有標題行
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    ' 循環處理每一行資料
    For i = 2 To lastRow ' 假設第一行是標題,從第二行開始

        ' 取得產品名稱
        productName = ws.Cells(i, 3).Value ' 假設產品名稱在第3欄

        ' 取得單價和數量
        price = ws.Cells(i, 4).Value ' 假設單價在第4欄
        quantity = ws.Cells(i, 5).Value ' 假設數量在第5欄

        ' 如果是相同的產品名稱,則彙集數據
        If productName = ws.Cells(summaryRow, 9).Value Then
            ' 加總數量
            ws.Cells(summaryRow, 11).Value = ws.Cells(summaryRow, 11).Value + quantity
        Else
            ' 新的產品,將結果寫入新的一行
            summaryRow = summaryRow + 1
            ws.Cells(summaryRow, 9).Value = productName ' 產品名稱
            ws.Cells(summaryRow, 10).Value = price ' 單價
            ws.Cells(summaryRow, 11).Value = quantity ' 數量
        End If
    Next i

End Sub



請按照以下步驟使用此程式:
STEP1:開啟您的Excel檔案。
STEP2:按下Alt + F11進入VBA編輯器。
STEP3:在VBA編輯器中,插入一個新的模組Module。
STEP4:將上述VBA程式碼,複製並貼上到新的模組Module中。
STEP5:在VBA編輯器中,按下F5運行程式。


相關可運用AI工具輔助寫程式資源


VBA程式,如何將2個特定字串間之字串取出

情境說明:
Excel表,第一列為標題列,A欄為空白,B欄為超連結文字,C欄為超連結網址(如下所示)

        A                         B                                        C
1                    examples1公司超連結簡介    https://www.example1.com.tw/Link?pageId=12345&type

想將C欄中,取出 pageId= &type 間,之數字 取出,並將它複製至 A欄位中,應該如何做


PROMPT提示訊息下法:
excel  表,第一列為標題列,請用VBA程式,將C欄位中,pageId=  右邊字串,到 &type=  為止之字串,複製到A欄位

Sub CopyString()   ' 取出網址列特定編號,自C欄位,複製至 A欄位
    Dim lastRow As Long
    Dim i As Long
    Dim str As String

    ' 取得最後一列的行數
    lastRow = Cells(Rows.Count, "C").End(xlUp).Row

    ' 逐行處理,從第二列開始
    For i = 2 To lastRow
        ' 判斷C欄位中是否包含 "pageId="
        If InStr(1, Cells(i, "C").Value, "pageId=") > 0 Then
            ' 取得 "pageId=" 右邊的字串
            str = Mid(Cells(i, "C").Value, InStr(1, Cells(i, "C").Value, "pageId=") + Len("pageId="))
            ' 判斷是否包含 "&type="
            If InStr(1, str, "&type=") > 0 Then
                ' 取得 "&type=" 左邊的字串
                str = Left(str, InStr(1, str, "&type=") - 1)
            End If
            ' 將字串複製到A欄位
            Cells(i, "A").Value = str
        End If
    Next i
End Sub

2023年12月12日 星期二

WebSite updating and migrating 網站更新建罝移轉參考資訊

 公司網站更新移轉建置參考資訊

一、需求及功能面向

☺開發廠商風評考慮?(服務經驗及口碑、系統人員服務量能與品質)
☺開發廠商是否充份掌握既有網頁功能,如何將舊網頁資料無痛移轉(移轉計劃合宜度及應變方案處置規劃,是否完善?)
☺開發廠商是否充份瞭解,並與各業務部門使用需求進行訪談並給予建議,達到更換需求目的?(如:訂單管理、電子報、前台及後台介面方便度等)
☺行銷部分SEO紀錄如何管理調校?(如:客戶瀏覽分析與制定管理策略)
☺跨平台規劃定位考量(如:不同瀏覽器支援、手機支援、圖片影像、網站效能及流量考量?)

二、安全性考量面向

☺設計架構是否有考量更新便利性,如採開放源碼元件,如:PHP、JAVA 、Tomcat、Linux、Jquery等後續多久更新?如何更新,權責應清楚?(作業系統面、資料庫面、網站程式面等遭遇問題分工機制?)
☺網站是否有使用HTTPS通訊協定,後續金鑰定期更換機制?
☺網站開發驗收前及程式大改版後,是否需做原始碼安全性檢測(如:OWASP TOP10檢測)
☺網站是否有CAPTCHA防止機器人暴力破解
☺網站使用者,是否有提供定期自動要求變更密碼、密碼複雜度要求、密碼三代不重覆、忘記密碼處理機制
☺安全性日誌,是否保留(如:作業系統LOG、網頁伺服器LOG),並建議定期備份與檢視

☺如何規劃災害還原處理?系統備份及異地還原機制,多久還原測試(如:遭勒索軟體加密後,異地備份整機還原測試)

三、版更及後續維運

☺公司是否有足夠人力,對新系統持續維運或需委託原開發廠商維運?
☺版本如何更新?(如:上架資料有問題、上架功能未達公司需求等,如何修正或調整?)
☺版權及原始碼提供?
☺程式碼及功能如需擴增更新,費用如何計算,方便評估後續委外維運成本
☺網頁維護廠商,後續售後服務為何?(叫修後於幾天內完成)
☺遠端維護,如何對搖控端主機進行安全性要求?(如:限縮指定來源IP、對方主機是否有定期更新、是否裝防毒軟體並維持最新、是否裝P2P軟體等)、是否通過ISO27001、相關人等填寫保密切結書?

四、教育訓練及使用手冊,教導同仁如何操作及使用



2023年12月10日 星期日

AI品牌相關工具,初步瞭解分析(請AI協助)

為儘快對AI工具粗淺認識,藉由AI(ChatGPT)協助。

(以下各家AI工具,回答出來不見得相同,僅供參考)

工具名稱

功能面強向

費用

語系支援

優點

CHATGPT

聊天機器人、文字生成、翻譯、問答

免費、付費

多國語言

功能強大、語言能力佳、價格實惠

BING

搜尋、翻譯、地圖、雲端儲存

免費

多國語言

功能齊全、使用介面簡潔、普及度高

BARD(Gemini)

聊天機器人、文字生成、翻譯、問答

免費

多國語言

功能強大、語言能力佳、不斷更新

Claude

生成文字、翻譯語言、撰寫不同創意內容

免費

多國語言

提供上傳檔案(如PDF檔)可協助分析重點、語言能力佳

Perplexity

文字生成、翻譯、問答

免費、付費

多國語言

功能強大、語言能力佳、價格實惠

Copilot

程式碼輔助

付費

多國語言

程式碼輔助效果佳、可節省開發時間

ChatEverywhere

程式碼輔助、聊天機器人

免費、付費

多國語言

可在多個平台使用、功能齊全

Monica

時間管理、任務管理

免費、付費

多國語言

功能多元、可自訂介面、價格實惠

Notion

筆記、待辦事項、協作

免費、付費

英文為主

功能多元、可自訂介面、協作效率高

 PROMPT提示訊息下法:

請協助將下列AI品牌工具(:CHATGPTBINGBARD(gemini)NotionPerplexity、Claude、CopilotChatEverywhereMonica),分別以表格及繁體中文方式呈現,進行初步瞭解,並包括功能面、費用、語系支援、優點,進行分析。

 

PROMPT詢問範例: ( 想瞭解最近資訊議題 AUTO ML機器學習 或 gemini 教學詢問方式,抽換Google gemini關鍵字,可查YOUTUBE網站與關鍵字相關領域學習參考資訊),可向AI網站詢問

Google geminiの応用的な使い方に関連するYOUTUBEチャンネルを教えてください









































延續先前分公司,各自單獨建立分頁  之範例

Excel 分頁過多(分公司多,以致於移動分頁困擾),希望於每個分頁的K1儲存格(即各個分公司 分頁K1儲存格),
再設定一個回總索引頁(即「 各分公司索引清單」)


Perplexity.ai
藉由Perplexity AI(ChatGPT)協助將每個各自獨立分公司分頁中的K1儲存格,建立回總索引頁(即「 各分公司索引清單」)之超連結,方便作業。
PROMPT提示訊息下法:
EXCEL表,有多個分頁,其中 各分公司索引清單,已有指向各分頁之超連結,
請用EXCEL VBA程式,幫忙於 各分頁中 K1儲存格,增設  各分公司索引清單 超連結 ,並將K1更名為  回索引清單。


Sub AddHyperlinkAndRename()
    Dim ws As Worksheet
    Dim wsRef As Worksheet
    Dim LastRow As Long
    Dim LastCol As Long
    Dim i As Long
    
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> "各分公司索引清單" Then
            LastRow = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row
            LastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
            
            For i = 2 To LastRow
                ws.Range(ws.Rows.Count, i).Value = ""
                ws.Range(ws.Rows.Count, i).EntireRow.Hidden = True
            Next i
            
            ws.Range("K1").Value = "回索引清單"
          
            
              ' 在各分頁的K1儲存格增設超連結
              
              ws.Range("K1").Hyperlinks.Add Anchor:=ws.Range("K1"), Address:="", SubAddress:="'" & "各分公司索引清單" & "'!A1"
                    
            
        End If
    Next ws
End Sub


請按照以下步驟使用此程式:
STEP1:開啟您的Excel檔案。
STEP2:按下Alt + F11進入VBA編輯器。
STEP3:在VBA編輯器中,插入一個新的模組Module。
STEP4:將上述VBA程式碼,複製並貼上到新的模組Module中。
STEP5:在VBA編輯器中,按下F5運行程式。

 

相關應用:

PivotTable樞鈕分析表,搭配Formula公式運用,詳列出   各個" 部門別"之擁有  台數之報表產製

用EXCEL VBA程式,各自單獨建立分公司分頁表,並增設超連結方便索引

因業務需要,有5個分公司(甲~戊)業務要管,想用EXCEL表,

提供給各單位填報回傳資料進行管理,並以分公司名稱 各自單獨建立1個工作表,

同時增設超連結方便索引 。

EXCEL表已先建立好各分公司名稱於A欄位中,如下:
         A
1  分公司名稱  
2  甲分公司
3  乙分公司
4  丙分公司
5  丁分公司
6  戊分公司


藉由AI(ChatGPT)協助建立各自建立分公司獨立分頁,並提供超連結設置,方便檢索


PROMPT提示訊息下法:
EXCEL表中,自A2儲存格起,有多個分公司 放於A欄位中,請提供VBA程式,幫忙建立 分公司分頁 ,並且設置超連結,方便檢索



Sub CreateCompanySheets()
    Dim ws As Worksheet
    Dim company As Range
    
    ' 在第一個工作表中建立一個名為 「 各分公司索引清單」的分頁
    Set ws = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
    ws.Name = "各分公司索引清單"
    
    ' 在「 各分公司索引清單」分頁中設置標題
    ws.Range("A1").Value = "分公司"
    
    ' 從A2儲存格起,逐一遍歷分公司名稱
    For Each company In ThisWorkbook.Sheets(1).Range("A2:A" & ThisWorkbook.Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row)
        ' 檢查分公司分頁是否已存在
        If Not SheetExists(company.Value) Then
            ' 如果分公司分頁不存在,則建立一個新的分頁
            ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)).Name = company.Value
        End If
        
        ' 在「 各分公司索引清單」分頁中設置超連結
        ws.Hyperlinks.Add Anchor:=ws.Range("A" & ws.Cells(Rows.Count, 1).End(xlUp).Row + 1), _
                          Address:="", _
                          SubAddress:="'" & company.Value & "'!A1", _
                          TextToDisplay:=company.Value
    Next company
    
    ' 回到  第一個工作表
    ThisWorkbook.Sheets(1).Activate

End Sub

Function SheetExists(sheetName As String) As Boolean
    Dim ws As Worksheet
    
    SheetExists = False
    For Each ws In ThisWorkbook.Sheets
        If ws.Name = sheetName Then
            SheetExists = True
            Exit Function
        End If
    Next ws
End Function


請按照以下步驟使用此程式:

STEP1:開啟您的Excel檔案。
STEP2:按下Alt + F11進入VBA編輯器。
STEP3:在VBA編輯器中,插入一個新的模組Module。
STEP4:將上述VBA程式碼,複製並貼上到新的模組Module中。
STEP5:在VBA編輯器中,按下F5運行程式。

VBA程式,將會在您的Excel檔案中建立一個名為「 各分公司索引清單」的分頁,並在該分頁中列出 所有分公司的超連結。點擊超連結即可跳轉到相對應的分公司 分頁 。