PDA

View Full Version : html to plain text



mohsen_solhjoo
سه شنبه 26 آذر 1387, 00:19 صبح
دوستان سلام
لطفا اگه ممکنه راهنمایی کنید.
چطور می تونم یک html رو به صورت متنی در بیارم (بدون تگ)
فقط متن صفحه رو داشته باشم

ممنون

Saeed_m_Farid
پنج شنبه 28 آذر 1387, 15:26 عصر
سلام
من فكر ميكنم سوال شما هم ناقصه؛ مثلا ياهو يا همين سايت: كجاش رو ميخواي به صورت متنی در بیاري يا
فقط متن صفحه رو داشته باشم؟
منظورت اينه كه فقط ميخواي تگها رو ورداري يا ميخواي يه براوزر بنويسي؟ اگه اولي رو بخواي زياد سخت نيست و هرچي <...> ديدي حذف ميكني ولي خيلي به نظر كار بيربطي مياد و نتيجه يه چيز خيلي گنگ و بيمعني اي ميشه؛ چون ممكنه متني كه شما ميگي صدها نوع مختلف نمايش داده بشه مثلا تو Table، body و يا انواع تركيبهاي tr و td و ... مگه اينكه مطمئن باشي كه 1 فرمت ثابت داري كه بحثش جداست.
در حالت دوم هم browser خود دلفي كه تقريبا كامله (Internet->TWebBrowser) و ميتوني هرجوري بخواي واسه خودت تغييرش بدي البته فقط اين نيست خيلي امكانات ديگه اي هم هست كه اگه دقيقا بگي مشكل چيه بهتر ميتونم راهنمايي كنم

mohsen_solhjoo
جمعه 06 دی 1387, 09:53 صبح
سلام
ممنونواز راهنمایی شما
من یک صفحه دارم به این ادرس که اطلاعات هواشناسی داره
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, 16:52 عصر
با سلام :
اگه فرمت 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 }

باتشکر
موفق باشید

vcldeveloper
یک شنبه 08 دی 1387, 00:50 صبح
اگر فقط میخواید متن صفحه را بدست بیارید:


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
سه شنبه 24 دی 1387, 23:44 عصر
با سلام
ممنون از کد و توضیحاتتون
اما یه سوآل
در دلفی اگه که بخوایم هر خط رو دریک خانه از آرایه و یا یک متغیر بریزیم چه جوری میشه مثلا همین کد متن صفحه رو به صورت خط به خط میاره چه طوری میشه هر خط رو در یک خانه از آرایه ریخت .
با تشکر

vcldeveloper
چهارشنبه 25 دی 1387, 01:59 صبح
در دلفی اگه که بخوایم هر خط رو دریک خانه از آرایه و یا یک متغیر بریزیم چه جوری میشه مثلا همین کد متن صفحه رو به صورت خط به خط میاره چه طوری میشه هر خط رو در یک خانه از آرایه ریخت .
ربطی به این تاپیک نداشت، در هر حال...
در کد موجود در پست شماره 5، اگر بخوایم خط اول متن را در متغیر MyStr بریزیم:

MyStr := Str[0];

mahdy.asia
شنبه 12 فروردین 1391, 07:25 صبح
اگر فقط میخواید متن صفحه را بدست بیارید:
حالا اگر بخواهید بعد از تغییرات متن توسط کاربر دوباره آن را در فایل html (بروز کردن محتوای متن فایل html مطابق با خواسته کاربر) قرار دهید و فایل را دوباره ذخیره کنید تا در صورت ارجاع به فایل متن جدید نمایش داده شود (ویرایشگر html مانند فرانت پیج)

vcldeveloper
شنبه 12 فروردین 1391, 12:23 عصر
حالا اگر بخواهید بعد از تغییرات متن توسط کاربر دوباره آن را در فایل html (بروز کردن محتوای متن فایل html مطابق با خواسته کاربر) قرار دهید و فایل را دوباره ذخیره کنید تا در صورت ارجاع به فایل متن جدید نمایش داده شود (ویرایشگر html مانند فرانت پیج)
IE فقط ابزار نمایش صفحات وب هست، نه ویرایش آنها؛ اگر میخواید صفحه ایی را بعد از نمایش به کاربر ویرایش کنید، با توجه به اینکه فایل های HTML فایل های متنی معمولی هستند، می تونید فایل مربوطه را در یک Memo یا RichEdit یا هر ویرایشگر دیگه ایی باز کنید، تغییرات مورد نظرتان را اعمال کنید، و فایل را مجددا ذخیره کنید. با Refresh کردن صفحه در WebBrowser (که مبتنی بر IE هست)، تغییرات شما هم نمایش داده میشه.