台灣最具影響力的-資訊專家社群 - 讓您成為最有價值的IT專業人才
線上人數
711
 
會員總數:230680
接案會員:6774
文章總數:2320
討論主題:176467
歡迎您免費加入會員
討論區列表 >> ASP.NET >> 網頁抓資料,如何自動點擊圖片?(不是按鈕哦)

[變換順序]
[我要回覆]
1


回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
網頁抓資料,如何自動點擊圖片?(不是按鈕哦)
價值 : 10 QP  點閱數:1780 回應數:10

點圖分享到Plurk吧!
樓主


初學者
15 88
1144 258
發送站內信

網頁抓資料,如何自動點擊圖片?(不是按鈕哦)

我想自動抓取這個網頁的資料

http://www.twse.com.tw/ch/trading/exchange/MI_MARGN/genpage/Report201103/A11220110311_1.php?select2=&chk_date=100/03/11

其中有一個 "另存csv"按鈕,想利用底下這行程式來修改(以Yahoo登入為例)
wb.Document.GetElementById(".save").DomElement.click() '按下"登入"按鍵

但是,這個網站上的並不是一個真的按鈕,而是圖片,元素為

img src="../../../../../images/save_csv.gif" onclick="window.open('../../MI_MARGN3_2.php?select2=&input_date=2011/03/11&type=csv','','toolbar=no,location=no,menubar=no,status=no,directories=no,resizable=yes,scrollbars=yes');" border="0/"

很納悶,要怎麼在圖片上做點擊動作呢?
本篇文章發表於2012-01-29 12:26
--
什麼是iT Power資訊報 新手會員瞧一瞧
1樓
作者回應


檢舉此回應
我是用VB.NET 2010 WebBrower 控件


本篇文章回覆於2012-01-29 12:39
--未登入的會員無法查看對方簽名檔--
2樓
作者回應


檢舉此回應
目前進度,我大概知道這個網站是用Java來寫的。
不好意思,這方面我是新手,還正在研究中...@@


本篇文章回覆於2012-01-29 13:12
--未登入的會員無法查看對方簽名檔--
3樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
你都知道網址了。。。

../../MI_MARGN3_2.php?select2=&input_date=2011/03/11&type=csv

何不直接存取呢。。。


本篇文章回覆於2012-01-29 23:40
--未登入的會員無法查看對方簽名檔--
4樓
作者回應


檢舉此回應
謝謝樓上的回應
(1)以這個網址來看,是可直接存取,但之後要處理很多字串(Html)的問題,並不好做。
若是可以存成csv,格式簡單很多,子串方面好處理。
(2)這個範例是直接有網址的,可以直接下載。但其它的資料,就沒有明確的網址了,不管日期是那一天,URL出現的都一樣,沒法針對某一天來下載,必須用程式去觸發日期,去觸發點選的動作,網頁才會從它的資料庫產生一個Table出來,像這種的,若用人一天一天去點選資料,實在是太累人了哦。所以想找找有沒有可以程式自動去觸發一些動作的方法。


本篇文章回覆於2012-01-30 10:50
--未登入的會員無法查看對方簽名檔--
5樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
這樣講好了...

要抓3月14的資料時,檔名就是0314
A11220110314_1.php

要抓3月15的資料時,檔名就是0315
A11220110315_1.php

(當然啦, chk_date 也要對應正確的日期)

====================
當你查詢過之後, 系統才會產生, 對應的報表檔, 進行暫存

之後才能用
MI_MARGN3_2.php?select2=&input_date=2011/03/14&type=csv
MI_MARGN3_2.php?select2=&input_date=2011/03/15&type=csv
來下載報表,

如果沒有先查過資料, 就想下載報表,
那麼就會抓到一個沒用的檔案





(最後:主動去抓他們的網頁資料, 只能治標, 只要他們改個功能, 你所寫的東西就會馬上破功)


本篇文章回覆於2012-01-30 11:12
--未登入的會員無法查看對方簽名檔--
6樓
作者回應


檢舉此回應
謝謝 小羊窒息 的關注
(1)是的,這個倒是很好抓資料,我也寫好了程式,一口氣抓了一大堆哦。
(2)底下的這個,就沒法這樣抓資料了,這是很頭疼的地方 @@
http://www.twse.com.tw/ch/trading/fund/TWT43U/TWT43U.php


本篇文章回覆於2012-01-30 12:03
--未登入的會員無法查看對方簽名檔--
7樓
最有價值解答

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
他又沒有限制一定要post...
自己加上qdate就有了...

http://www.twse.com.tw/ch/trading/fund/TWT43U/TWT43U.php?qdate=101/1/17




本篇文章回覆於2012-01-30 14:35
--未登入的會員無法查看對方簽名檔--
8樓
作者回應


檢舉此回應
天啊,這...這....這你是怎麼知道可以這樣加的啊?
你實在太神了,我弄了半天,就是不曉得要怎麼讓網頁自動顯示出資料來。
春節有好幾天都在家一個一個按,搞得我手指比手臂還要粗 @@
太感謝你了


本篇文章回覆於2012-01-30 18:15
--未登入的會員無法查看對方簽名檔--
9樓
回應

小羊窒息
捐贈 VP 給 小羊窒息 檢舉此回應
input本身都有1個name (那個網頁的日期欄位, name是qdate)

如果form是設定 get, 那麼送出資料後會在網址列出現 qdate=xxxx
如果是設定為post, 則網址列不會出現


除非寫程式的人有特別指定要抓post的資料, 或者指定要抓get的資料


不然...一般的程式語言...在Request時,
只要1個不存在, 就會去抓另一個.............(這也是網站容易被攻擊的原因之一)

=========================
因此,只要看原始碼,看到日期欄位是qdate...
就可以自行在網址加上qdate=xxxxxxx
(當然啦,這不是每個網站都適用,但上述網站是適用的)


本篇文章回覆於2012-01-30 18:38
--未登入的會員無法查看對方簽名檔--
10樓
作者回應


檢舉此回應
再度叩謝,雖然是小羊,但你比灰太狼還要厲害啦,讚!


本篇文章回覆於2012-01-30 22:33
--未登入的會員無法查看對方簽名檔--
[變換順序]
1
 

回覆
如要回應,請先登入.