none
在broswer網址列輸入javascript語法翻頁 RRS feed

  • 問題

  • 初來乍到請多指教!

    最近在寫抓網頁資料的程式遇到麻煩!

    網站是 http://www.pacific.com.tw/Branch.aspx  (太平洋房屋網站)

    語法如下

         public string Reader(string url, bool bProxy = true)
            {
                string html = "";
                Browser browser = new IE();
                browser.GoTo(url);
                System.Threading.Thread.Sleep(500);
                int State = browser.SelectList(Find.ById("ctl00_ctl00_Main_Main_DropDownList1")).Options.Count();
                for (int statecount = 1; statecount < State; statecount++)
                {
                    browser.SelectList(Find.ById("ctl00_ctl00_Main_Main_DropDownList1")).Options[statecount].Select();
                    System.Threading.Thread.Sleep(1000);
                    string htm2 = browser.Html;
                    HtmlDocument doc = new HtmlDocument();
                    doc.LoadHtml(htm2);
                    if (htm2.IndexOf("ctl00$ctl00$Main$Main$GridView1") > -1)
                    {
                        HtmlNode table = doc.DocumentNode.SelectSingleNode("//td[@colspan='3']");
                        var rows = table.Descendants("td").ToArray();
                        foreach (var row in rows)
                        {
                            if (row.InnerHtml.IndexOf("href", 0) > 0)
                            {
                                HtmlNode[] cols = row.Descendants("a").ToArray();
                                for (int i = 0; i < cols.Count(); i++)
                                {
                                    string DS = cols[i].GetAttributeValue("href", "");
                                    browser.GoTo(DS);
                                    System.Threading.Thread.Sleep(1000);
                                    html += browser.Html + sPageSplit;
                                }
                            }
                        }

                        html += htm2;
                    }
                    else
                    {
                        System.Threading.Thread.Sleep(1000);
                        html += browser.Html + sPageSplit;
                    }
                }
                browser.Close();
                return html;
            }

    (新手剛起步寫法凌亂請勿介意><)

    這是一部份的語法,主要抓全台每頁資料

    但遇到一個問題

    原本同樣的語法在相同框架的其他網站上可以使用

    但這裡會卡在第二頁停住無法翻三頁

    用中斷點測很奇怪的是卡在

                              browser.GoTo(DS);
                                    System.Threading.Thread.Sleep(1000);

    goto DS後,也就是翻完第二頁後

    執行的黃點就不見了

    網頁也沒動作停在那

    但用手動直接將javascript:__doPostBack('ctl00$ctl00$Main$Main$GridView1','Page$3')這段話貼在網址列是可以翻頁的

    不知道原因可能是什麼?

    2014年7月18日 上午 08:36

所有回覆

  • 最有可能是對方有設計防止擷取資料的功能。

    不精確的問法,就會得到隨便猜的答案;自己都不肯花時間好好描述問題,又何必期望網友會認真回答?

    2014年7月18日 下午 02:23