2014-01-19 28 views
1

我在使用Html Agility Pack從網站提取數據時遇到問題。由Html Agility加載的頁面源與瀏覽器中的View Page Source菜單的源不相同。這裏是我的區別:防止Html敏捷包改變加載的頁面源

查看頁面源代碼:

<td> 
    <span style="color:#158EF7; font-weight:bold"> 
     ABCDEF 
    </span> 
</td> 

來源從Html Agility

<td> 
    <font face="Arial" color="#404040" size="2"> 
     <span style="color:#158EF7; font-weight:bold"> 
      ABCDEF 
     </span> 
    </font> 
</td> 

回來,我不知道爲什麼有這樣大的差別。也許是因爲JavaScript代碼或其他東西。但我不在乎,我只是想得到像我從View Page Source菜單中獲得的確切來源。我怎樣才能做到這一點?謝謝你的幫助。

回答

1

當解析Google找出網頁及其位置時,我也遇到了這個問題。正如你所說的那樣,我覺得從頁面源中產生的差異

如果我沒有記錯,你發送一個HTTP標頭,其中包括一個屬性,叫做的User-Agent在這裏閱讀更多 - >WIKIEPEDIA ABOUT USER-AGENTS。這告訴你在網站的解析你或者如果你是一個webcrawling什麼樣的瀏覽器機器人。

問題
多小時後,我看到了,我送一個空字符串它被設置爲默認值,雖然,但我不知道的時候。這反過來使谷歌相信我是不從瀏覽器發送HTTP請求,但只是一個機械蜘蛛...... AKA網絡爬蟲。

解決方案
嘗試,並設置您的用戶代理相同的瀏覽器使用的是。這應該讓你的字符串更像頁面源碼。
但是!!!如果他們運行腳本來改變網站上的內容,那麼他​​們就會根據腳本中的內容進行更改。這是一個完整的故事。

在此處查看不同的用戶代理字符串 - >User-agent string list

+1

它的工作原理。非常感謝。我可以再問你一個問題嗎?我正在使用FireFox。當我點擊「Inspect Element」時,它會自動改變一些內容,比如在'

'中插入''。我可以讓'Html Agility'也​​這樣做嗎? – AnhTriet

+0

在這裏檢查它可能會幫助你http://stackoverflow.com/questions/938083/why-do-browsers-insert-tbody-element-into-table-elements – 8bitcat