PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   第一次 寫電腦語言 寫程式 (https://www.pcdvd.com.tw/showthread.php?t=936213)

errorsmyth 2011-07-17 04:07 PM

第一次 寫電腦語言 寫程式
 
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">

BEE 2011-07-17 04:16 PM

pcdvd 就是網路 餐館 要吃啥有啥。 點啥就沒啥。
要解決進階問題 唯有自己摸索做功課 沒人幫得了忙。 :D

以月為影 2011-07-17 04:43 PM

第一次喔... 大概很難吧

darkangel 2011-07-17 04:46 PM

網頁元素分析啊? 這很簡單啊,
不過我建議你這麼高等的人類, 別寫程式, 去做些更有意義的事.
程式是我這種低等猴子在寫的~
:like: :like: :like: :like: :like:

sazabijiang 2011-07-17 05:40 PM

引用:
作者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能不能幫上你
(我從首頁看不到歌名日期, 也認不得哪個字是樂團名稱)

errorsmyth 2011-07-17 06:14 PM

引用:
作者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

errorsmyth 2011-07-17 06:26 PM

找到這頁
http://neural.cs.nthu.edu.tw/jang/b...sp/example/WSH/
WSH 範例程式
getwebpage3.js 抓取一個網頁,並將其內容存入一個檔案

anderson1127 2011-07-17 07:12 PM

看來是想寫砍站程式....

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

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

基本上我不想背罵名,所以就不幫忙了.... :D:D:D

sazabijiang 2011-07-17 07:23 PM

我看到播放器會顯示正在播放的歌名/歌手 以及剛才播放的歌名/歌手
本程式執行時會記錄執行時間, 以及當時正在播放的歌名與歌手

在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

errorsmyth 2011-07-18 12:59 AM

[QUOTE=sazabijiang]我看到播放器會顯示正在播放的歌名/歌手 以及剛才播放的歌名/歌手
...恕刪

請受小弟一拜。
感恩。


所有的時間均為GMT +8。 現在的時間是03:25 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2025。