用indy提取网页中的部分内容 |
答題得分者是:st33chen
|
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
我的代码如下 [code delphi] procedure TForm1.Button1Click(Sender: TObject); var rStream: TStringStream;astr:string;mylist:TStringList; begin rStream:= TStringStream.Create('', TEncoding.Default); IdHTTP1.Get('http://qq.ip138.com/weather/zhejiang/hangzhou.htm',rstream); astr := rStream.DataString; astr:=stringreplace(astr,'/> ','',[rfreplaceall]); astr:=stringreplace(astr,' | ','', [rfreplaceall]);
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
|
st33chen
尊榮會員 發表:15 回覆:591 積分:1201 註冊:2005-09-30 發送簡訊給我 |
您好,
若只是專為取第一個 多云转晴 的特殊目的可用 : ii := pos(' / > < b r / >', astr) 7; // 第一參數字串內無空格 astr := copy(astr, ii, 1000); ii := pos('< / t d ', astr)-1; // 第一參數字串內無空格 bstr := copy(astr, 1, ii); // 取資料 若還有其他欄位要取, 取第一個 多云转晴 只是舉例, 可以 : 1. 參考 http://delphi.ktop.com.tw/board.php?cid=30&fid=1498&tid=97809 中的 html functions. 2. 取第一個 多云转晴 的用例是 : astr := findtr(astr); astr := skiptd(astr); // 去掉 天气 這一欄 astr := findtd(astr); // 找到下一欄 bstr := getdata(astr); // 取資料 參考一下 ---------------------------------------- 若要從您的頁面取出第一天的天氣文字說明 : astr := findstr('让你感受当老板的乐趣', astr); // 去掉特殊字及其之前所有文字 astr := findtr(astr); // 找到第一個 < t r 就是 table 的 t h 那一列, 不處理 astr := findtr(astr); // 找到第二個 < t r astr := skiptd(astr); // 去掉 天气 這一欄 astr := findtd(astr); // 找到下一欄 bstr := getdata(astr); // 取資料 用 function 會比較方便. 不過, 若 < t a b l e 中還有 < t a b l e 可能就不適用, 需要額外處理.
------
IS IT WHAT IT IS 我是 李慕白 請倒著唸. 又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦); 都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲. |
zhouying82
高階會員 發表:150 回覆:272 積分:189 註冊:2004-03-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |