在程式中使用twebbrowser控制項或者indy中控制項連線採用ajax技術的網頁,獲得的網頁原始碼中並不會有客戶端更新的內容。在ie瀏覽器中的檢視原始檔同理也是看不到ajax更新的內容。通過外掛程式可以看到ajax更新後的內容。問題是在程式中怎樣來獲得完整的網頁內容?
如果有ajax更新,webbrowser的documentcomplete事件也不會被觸發。
其實完整的網頁內容並不是不可以獲得,使用乙個簡單的方法就可以:
function gethtml(const webbrowser:twebbrowser): string;
vardoc: ihtmldocument2;
begin
doc := webbrowser.document as ihtmldocument2;
if assigned(doc) and assigned(doc.body) then
result := doc.body.outerhtml; //也可以用innerhtml取得其html文字
end;
這樣獲得的html內容中就包含了ajax更新的內容。
現在關鍵是沒有好的辦法來判斷ajax是否已更新完畢,由於採用的是非同步更新,所以在判斷上比較困難。上網搜尋了一下,國外好像有比較複雜解決方案的,也沒有研究過究竟可行否。
做過網頁內容採集軟體的,不知道有沒有好的辦法來處理,歡迎指教。 :-)
Delphi取Ajax網頁內容
在程式中使用twebbrowser控制項或者indy中控制項連線採用ajax技術的網頁,獲得的網頁原始碼中並不會有客戶端更新的內容。在ie瀏覽器中的檢視原始檔同理也是看不到ajax更新的內容。通過外掛程式可以看到ajax更新後的內容。問題是在程式中怎樣來獲得完整的網頁內容?如果有ajax更新,web...
Python爬取網頁內容
其時序圖如圖所示。給定乙個要訪問的url,獲取這個html及內容,遍歷html中的某一類鏈結,如a標籤的href屬性,從這些鏈結中繼續訪問相應的html頁面,然後獲取這些html的固定標籤的內容,如果需要多個標籤內容,可以通過字串拼接,最後通過正規表示式刪除所有的標籤,最後將其中的內容寫入.txt檔...
python lxml爬取網頁內容
from lxml import etree import requests url response requests.get url text response.text html etree.html text 先獲取到這個頁面的html,對了,這裡還用到了xpath來選擇節點,具體用法請參考...