View Full Version : html to plain text
mohsen_solhjoo
سه شنبه 26 آذر 1387, 00:49 صبح
دوستان سلام
لطفا اگه ممکنه راهنمایی کنید.
چطور می تونم یک html رو به صورت متنی در بیارم (بدون تگ)
فقط متن صفحه رو داشته باشم
ممنون
Saeed_m_Farid
پنج شنبه 28 آذر 1387, 15:56 عصر
سلام
من فكر ميكنم سوال شما هم ناقصه؛ مثلا ياهو يا همين سايت: كجاش رو ميخواي به صورت متنی در بیاري يا
فقط متن صفحه رو داشته باشم؟
منظورت اينه كه فقط ميخواي تگها رو ورداري يا ميخواي يه براوزر بنويسي؟ اگه اولي رو بخواي زياد سخت نيست و هرچي <...> ديدي حذف ميكني ولي خيلي به نظر كار بيربطي مياد و نتيجه يه چيز خيلي گنگ و بيمعني اي ميشه؛ چون ممكنه متني كه شما ميگي صدها نوع مختلف نمايش داده بشه مثلا تو Table، body و يا انواع تركيبهاي tr و td و ... مگه اينكه مطمئن باشي كه 1 فرمت ثابت داري كه بحثش جداست.
در حالت دوم هم browser خود دلفي كه تقريبا كامله (Internet->TWebBrowser) و ميتوني هرجوري بخواي واسه خودت تغييرش بدي البته فقط اين نيست خيلي امكانات ديگه اي هم هست كه اگه دقيقا بگي مشكل چيه بهتر ميتونم راهنمايي كنم
mohsen_solhjoo
جمعه 06 دی 1387, 10:23 صبح
سلام
ممنونواز راهنمایی شما
من یک صفحه دارم به این ادرس که اطلاعات هواشناسی داره
http://www.rap.ucar.edu/weather/surface/?metarIds=OIII&hoursStr=most+recent+only&std_trans=translated&num_metars=number&submit_metars=Retrieve
در حقیقت من می خوام که ای صفحه رو به صورت متنی ذخیره کنم بعد اجزای اون رو جدا کنم
ممنون میشم راهنمایی کنید
Saeed_m_Farid
شنبه 07 دی 1387, 17:22 عصر
با سلام :
اگه فرمت HTML واستون کافیه یعنی میخواین با فرمت HTML محتویات نمایش داده شده رو ذخیره کنید یا بریزینشون تو یه Stream میشه این توابع رو استفاده کرد توجه کنید که باید ActiveX رو به use هات اضافه کنی؛ این کد خیلی جاها هست ولی فکر کنم تا اونجاییکه یادم میاد من این توابع رو تو http://delphi.about.com دیدم :
procedure WB_SaveAs_HTML
(WB:TWebBrowser; const FileName : string);
var
PersistStream: IPersistStreamInit;
Stream: IStream;
FileStream: TFileStream;
begin
if not Assigned(WB.Document) then
begin
ShowMessage('Document not loaded!');
Exit;
end;
PersistStream := WB.Document as IPersistStreamInit;
FileStream := TFileStream.Create(FileName, fmCreate);
try
Stream := TStreamAdapter.Create(FileStream, soReference)
as IStream;
if Failed(PersistStream.Save(Stream, True)) then
ShowMessage('SaveAs HTML fail!');
finally
FileStream.Free;
end;
end; (* WB_SaveAs_HTML *)
function WB_GetHTMLCode(WebBrowser: TWebBrowser; ACode: TStrings): Boolean;
var
ps: IPersistStreamInit;
ss: TStringStream;
sa: IStream;
s: string;
begin
ps := WebBrowser.Document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, True));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;
ولی اگه فقط body رو میخواین یکم باید بیشتر زحمت بکشید!:چشمک: شوخی کردم قبل از ما زحمتشو کشیدن و یه کلاس کامل ازش ساختن که یه نمونه دمو رو میتونی تو فایل ضمیمه ببینی. { توضیحات بیشتر : http://www.delphidabbler.com/articles?article=14 }
باتشکر
موفق باشید
علی کشاورز
یک شنبه 08 دی 1387, 01:20 صبح
اگر فقط میخواید متن صفحه را بدست بیارید:
var
Str : TStringList;
begin
Str := TStringList.Create;
try
Str.Text := Variant(WebBrowser1.Document).Body.InnerText;
Str.SaveToFile('C:\MyFile.txt');
finally
Str.Free;
end;
end;
narsic
چهارشنبه 25 دی 1387, 00:14 صبح
با سلام
ممنون از کد و توضیحاتتون
اما یه سوآل
در دلفی اگه که بخوایم هر خط رو دریک خانه از آرایه و یا یک متغیر بریزیم چه جوری میشه مثلا همین کد متن صفحه رو به صورت خط به خط میاره چه طوری میشه هر خط رو در یک خانه از آرایه ریخت .
با تشکر
علی کشاورز
چهارشنبه 25 دی 1387, 02:29 صبح
در دلفی اگه که بخوایم هر خط رو دریک خانه از آرایه و یا یک متغیر بریزیم چه جوری میشه مثلا همین کد متن صفحه رو به صورت خط به خط میاره چه طوری میشه هر خط رو در یک خانه از آرایه ریخت .
ربطی به این تاپیک نداشت، در هر حال...
در کد موجود در پست شماره 5، اگر بخوایم خط اول متن را در متغیر MyStr بریزیم:
MyStr := Str[0];
vBulletin® v4.0.8, Copyright ©2000-1390, Jelsoft Enterprises Ltd.