PCDVD數位科技討論區
PCDVD數位科技討論區   註冊 常見問題 標記討論區為已讀

回到   PCDVD數位科技討論區 > 其他群組 > 七嘴八舌異言堂
帳戶
密碼
 

回應
 
主題工具
errorsmyth
Basic Member
 
errorsmyth的大頭照
 

加入日期: May 2003
文章: 22
第一次 寫電腦語言 寫程式

http://www.96fm.com.au/
網路電台的歌單想側錄下來

下載Dev-C+ 嘗試寫看看,不如何著手,

如有仁兄能指點迷津,非常感激

側錄 : 日期 歌名 樂團歌手

另存為文件或excel文件檔

以下是網頁部份原始碼,
<!DOCTYPE html>
<html><!-- InstanceBegin template="/Templates/mainTemplate.dwt.php" codeOutsideHTMLIsLocked="false" -->
<head>
<meta name="description" content=""/>
<meta name="keywords" content=""/>
<link rel="shortcut icon" href="http://www.96fm.com.au/favicon.ico" />
<!--
*********************************************
Site developed by Harmonic New Media
http://www.harmonicnewmedia.com
Copyright 2011. All rights reserved.
Design: Harmonic New Media
*********************************************
-->
<!-- InstanceBeginEditable name="doctitle" -->
<title>96fm - Perth's Best Music</title>
<!-- InstanceEndEditable -->
<!-- ***************************************************

<span class="Apple-style-span" style="border-collapse: separate; color: rgb(102, 102, 102); font-family: Arial, Helvetica, sans-serif; font-size: 13px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; "><span class="Apple-style-span" style="color: rgb(68, 68, 68); font-weight: bold; ">Sunday 17 Jul 2011 14h35</span></span>

onclick="window.open('http://www.96fm.com.au/index.php/player','listen_live','width=620,height=310');return false;" ></a>
<section id="box-onair">
<h2>On Air Now</h2>
<div id="now-playing">
<span class="onair-tts">Now Playing</span>
<span>WHEN LOVE COMES TO TOWN</span>
<span><em>U2</em></span>
</div>
<div id="just-played">
<span class="onair-tts">Just Played</span>
<span>ROCK D.J - <em>ROBBIE WILLIAMS</em></span>
<span>ROLLING IN THE DEEP - <em>ADELE</em></span>
</div>
<div id="show-details">
<span class="onair-tts">Show Details</span>
<span id="show-name">Currently no shows. <a href="http://www.96fm.com.au/index.php/shows/showDetail/"></a></span>
<span> </span>

</div>
</section>
<section id="banner-square" class="banner-box">
<a href="http://www.96fm.com.au/index.php/contact/">Advertisement</a>
<script type="text/javascript">
     
      
舊 2011-07-17, 04:07 PM #1
回應時引用此文章
errorsmyth離線中  
BEE
Elite Member
 

加入日期: Nov 2000
您的住址: 台北
文章: 5,452
pcdvd 就是網路 餐館 要吃啥有啥。 點啥就沒啥。
要解決進階問題 唯有自己摸索做功課 沒人幫得了忙。
 
舊 2011-07-17, 04:16 PM #2
回應時引用此文章
BEE離線中  
以月為影
Senior Member
 

加入日期: Nov 2002
文章: 1,414
第一次喔... 大概很難吧
舊 2011-07-17, 04:43 PM #3
回應時引用此文章
以月為影離線中  
darkangel
Major Member
 
darkangel的大頭照
 

加入日期: Aug 2001
文章: 211
網頁元素分析啊? 這很簡單啊,
不過我建議你這麼高等的人類, 別寫程式, 去做些更有意義的事.
程式是我這種低等猴子在寫的~
__________________
滿招損 謙受益
舊 2011-07-17, 04:46 PM #4
回應時引用此文章
darkangel離線中  
sazabijiang
*停權中*
 

加入日期: Sep 2004
您的住址: 台北
文章: 8
引用:
作者errorsmyth
http://www.96fm.com.au/
網路電台的歌單想側錄下來

下載Dev-C+ 嘗試寫看看,不如何著手,

如有仁兄能指點迷津,非常感激

側錄 : 日期 歌名 樂團歌手

另存為文件或excel文件檔

以下是網頁部份原始碼,
..


用C處理html比較吃力, 建議樓主學VBA, 寫WSH(window Script Host).
在WSH裡使用HttpRequest模擬瀏覽器對網站發出query, 傳回來的response就是整個網頁原始碼, 再寫一段parser根據特定關鍵字擷取你要的資訊即可.

用WSH寫應該不用超過100行程式碼.

不然你直接抓歌單的網頁下來, 我看看之前寫的Excel VBA能不能幫上你
(我從首頁看不到歌名日期, 也認不得哪個字是樂團名稱)

此文章於 2011-07-17 05:42 PM 被 sazabijiang 編輯.
舊 2011-07-17, 05:40 PM #5
回應時引用此文章
sazabijiang離線中  
errorsmyth
Basic Member
 
errorsmyth的大頭照
 

加入日期: May 2003
文章: 22
引用:
作者sazabijiang
用C處理html比較吃力, 建議樓主學VBA, 寫WSH(window Script Host).
在WSH裡使用HttpRequest模擬瀏覽器對網站發出query, 傳回來的response就是整個網頁原始碼, 再寫一段parser根據特定關鍵字擷取你要的資訊即可.

用WSH寫應該不用超過100行程式碼.

不然你直接抓歌單的網頁下來, 我看看之前寫的Excel VBA能不能幫上你
(我從首頁看不到歌名日期, 也認不得哪個字是樂團名稱)


看到有人回應真的很高興, 非常感謝您,有關鍵字"VBA",我就可以google,研究一下。
歌名寫在這,
<span class="onair-tts">Now Playing</span>
<span>WHEN LOVE COMES TO TOWN</span>
<span><em>U2</em></span>
做重整網頁刷新歌名時,在browser狀態列會看到的URL是首頁http://www.96fm.com.au/
播放器的url = http://www.96fm.com.au/index.php/player

再次感謝 sazabijiang

此文章於 2011-07-17 06:20 PM 被 errorsmyth 編輯.
舊 2011-07-17, 06:14 PM #6
回應時引用此文章
errorsmyth離線中  
errorsmyth
Basic Member
 
errorsmyth的大頭照
 

加入日期: May 2003
文章: 22
找到這頁
http://neural.cs.nthu.edu.tw/jang/b...sp/example/WSH/
WSH 範例程式
getwebpage3.js 抓取一個網頁,並將其內容存入一個檔案
舊 2011-07-17, 06:26 PM #7
回應時引用此文章
errorsmyth離線中  
anderson1127
Elite Member
 

加入日期: Jan 2002
文章: 4,031
看來是想寫砍站程式....

很久很久以前,我就寫過Perl Script 來砍美女圖網站...
因為一張一張手動抓好累... 於是.... Regular Expression 出動了...

然後把圖都燒起來用CD存放 , 幾年前決定把這些美女圖CD全部扔了,回收去了!!

基本上我不想背罵名,所以就不幫忙了....
__________________
您想買新硬碟嗎? 購買前請務必參考這篇文章,是我的實際經驗

還想讓統一賺你的錢嗎?統一集團成員(能見度高的):
星巴克、家樂福、7-11、無印良品、黑貓宅急便、聖娜多堡、阪急百貨、
康是美、博客來、夢時代、Mister Donut 、Cold Stone 、龜甲萬、
維力33%股權、光泉31%股權、Smile速邁樂、紅心辣椒、台北轉運站(統一企業BOT)

統一LP33膠囊有環保署早已列管的一級管制品: DNOP塑化劑
舊 2011-07-17, 07:12 PM #8
回應時引用此文章
anderson1127現在在線上  
sazabijiang
*停權中*
 

加入日期: Sep 2004
您的住址: 台北
文章: 8
我看到播放器會顯示正在播放的歌名/歌手 以及剛才播放的歌名/歌手
本程式執行時會記錄執行時間, 以及當時正在播放的歌名與歌手

在C根目錄開啟一個空白文字檔例如 getweb.txt, 貼上以下程式碼存檔, 檔名改為getweb.vbs, 點兩下即可執行, 在C根目錄會產生songlist.txt




' 指定要存取的網址URL
WEBURL = "http://www.96fm.com.au/index.php/player"

' 指定歌曲資訊存檔路徑與檔名
OUTFILE = "c:\songlist.txt"

' 指定網頁關鍵字, 用以判別網頁內容是否有用
KEYWORD = "<h2>Now Playing</h2>"

Set objWinHttp = WScript.CreateObject("WinHttp.WinHttpRequest.5.1")
Set fs = WScript.CreateObject("Scripting.FileSystemObject")
Set FileOut = fs.OpenTextFile(OUTFILE, 8, True)

' 下載目標網頁原始碼
objWinHttp.Open "GET", WEBURL, false
objWinHttp.Send
RContent = objWinHttp.ResponseText
available = instr(1, RContent, KEYWORD, 1)
If available <> 0 Then
FileOut.WriteLine "Time: " + cStr(Time())
Info = GetSongInfo(RContent)
FileOut.WriteLine Info
FileOut.WriteLine ""
FileOut.Close

msgbox(Info)

else
msgbox ("網頁[" + WEBURL + "] 不存在關鍵字[" + KEYWORD + "]. 程式終止")
End If



' ===============================
' 傳入網頁內容, 傳回歌曲資訊
' ===============================
Function GetSongInfo(vContent)
startAddr = instr(1, vContent, KEYWORD, 1)
If startAddr > 0 then

startAddr = instr(startAddr, vContent, "<span>", 1)
endAddr = instr(startAddr, vContent, "</span>", 1)
Info1 = Mid(vContent, startAddr+6, endAddr-startAddr-6)
startAddr = instr(endAddr, vContent, "<span><em>", 1)
endAddr = instr(startAddr, vContent, "</em></span>", 1)
Info2 = Mid(vContent, startAddr+10, endAddr-startAddr-10)

GetSongInfo = Info1 + ", " + Info2
else
GetSongInfo = "沒有歌曲資訊"
End If
End Function
舊 2011-07-17, 07:23 PM #9
回應時引用此文章
sazabijiang離線中  
errorsmyth
Basic Member
 
errorsmyth的大頭照
 

加入日期: May 2003
文章: 22
[QUOTE=sazabijiang]我看到播放器會顯示正在播放的歌名/歌手 以及剛才播放的歌名/歌手
...恕刪

請受小弟一拜。
感恩。
舊 2011-07-18, 12:59 AM #10
回應時引用此文章
errorsmyth離線中  


回應


POPIN
主題工具

發表文章規則
不可以發起新主題
不可以回應主題
不可以上傳附加檔案
不可以編輯您的文章

vB 代碼打開
[IMG]代碼打開
HTML代碼關閉



所有的時間均為GMT +8。 現在的時間是10:13 PM.


vBulletin Version 3.0.1
powered_by_vbulletin 2025。