Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: lấy nội dung file html có chọn lọc như thế nào?

  1. #1
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    Mặc định lấy nội dung file html có chọn lọc như thế nào?

    goal của em là viết một giao diện mới cho một trang web, nhưng em mới chỉ chập chững tìm hiểu lập trình mạng.

    em thấy admin dùng hàm recv để lấy file html (trong bài http://diendan.congdongcviet.com/showthread.php?t=7362)

    lên thư viện thì thấy một tác giả khác dùng InternetReadFile trong wininet

    Vấn đề em muốn hỏi là : làm thế nào để lấy "nội dung", nhưng không lấy fomat của file html.

    nội dung ở đây là những dòng text, ví dụ như ở trang này là:
    Code:
    Cộng đồng C Việt > LẬP TRÌNH VISUAL C++ | LẬP TRÌNH VISUAL C++.NET > Thắc mắc lập trình Visual C++
    Code:
    Bạn đã ghé thăm lần cuối cùng ngày: 23-09-2011 lúc 09:33 PM
    Code:
    LUẬT LỆ THAM GIA DIỄN ĐÀN CỘNG ĐỒNG C VIỆT (NỘI QUY)
    - GIẢM GIÁ, ƯU ĐÃI CÁC MẶT HÀNG CNTT CHỈ DÀNH CHO THÀNH VIÊN CỘNG ĐỒNG C VIỆT
    - CHỈ CÓ TẠI CỘNG ĐỒNG C VIỆT: TRÌNH BÀY CODE CHUYÊN NGHIỆP VỚI CODE TAG NÂNG CAO.
    - CHIẾN DỊCH 2011: TỪ CHỐI HỖ TRỢ TRẢ LỜI KỸ THUẬT QUA EMAIL, TIN NHẮN, YAHOO, PM,...
    fomat ở đây là các thẻ html quy định định dạng chữ (ex : <BR> <H1> ...)

    nếu tải toàn bộ file html như admin rồi lọc nội dung thì sẽ mất nhiều chi phí, em chỉ muốn lấy text, không lấy image, ko lấy table, hay không lấy video quảng cáo trên trang web, liệu có cách nào ko ạ.

    thanks.

  2. #2
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Cái này khá đơn giản nếu bạn hiểu được cấu trúc của HTML là gì

    Cách đơn giản nhất. Hãy loại tất cả những ký tự nằm trong khoảng giữa "<" và ">" bạn sẽ có thứ mình cần.

    Nếu là C# thì có cái regex rất tiện lợi, hoặc cũng có thể dùng ngay lớp WebBrowser của MS (Body.OuterText)
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  3. #3
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    thank you, nhưng em không muốn download toàn bộ file html, down rồi lọc thì không có gì để nói cả, em muốn lọc trước khi down hoặc đơn giản liệu có cách nào chỉ down 1 nửa file html ko ạ

  4. #4
    Ngày gia nhập
    09 2008
    Bài viết
    223

    Trích dẫn Nguyên bản được gửi bởi pkthanh92 Xem bài viết
    thank you, nhưng em không muốn download toàn bộ file html, down rồi lọc thì không có gì để nói cả, em muốn lọc trước khi down hoặc đơn giản liệu có cách nào chỉ down 1 nửa file html ko ạ
    Mã HTML là mã mà 1 web server trả về cho bạn nên ko có cách nào lọc trược khi tải cả. Mà chỉ có tải và lọc

    Theo bài viết trên. InternetReadFile sẽ đọc theo buffer. Tức là nếu bạn gán cho nó buffer = 255 byte thì mỗi lần nó chỉ nhận về 255 byte mà thôi. Quá trình sẽ tiếp tục tuần tự (while...do) cho đến khi hết nội dung file thì thôi. Tất nhiên trong quá trình này bạn có thể dừng lại bất kì lúc nào bạn muốn
    Ân oán giang hồ nuôi tôi lớn
    Cuộc đời khốn nạn dạy tôi khôn
    Không đâm không chém đời không nể
    Không tiền không bạc gái không theo

    ----------------------
    Visit my blog: http://nova-soft.net/

  5. #5
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    em dùng một đoạn code nho nhỏ của Mahesh Chand trong bài "Download a Web Page using InternetOpenUrl API"

    Visual C++ Code:
    1. void CgethtmlDlg::OnBnClickedOk()
    2. {
    3.     CString m_strContents;
    4.     HINTERNET hINet, hFile;
    5.     hINet = InternetOpen(TEXT("InetURL/1.0"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0 );
    6.     hFile = InternetOpenUrl( hINet, TEXT("http://www.google.com"), NULL, 0, 0, 0 ) ;
    7.     UINT len=0;
    8.  
    9.     CHAR buffer[1024];
    10.     DWORD dwRead;
    11.    
    12.     while ( InternetReadFile( hFile, buffer, 1024, &dwRead ) )\
    13.     {
    14.         len+=1024;
    15.         if ( dwRead == 0 ) break;
    16.         buffer[dwRead] = 0;
    17.         m_strContents += buffer;
    18.     }
    19.     InternetCloseHandle( hFile );
    20.     CFile hf;
    21.     hf.Open(TEXT("D:\\new.html"), CFile::modeCreate|CFile::modeWrite);
    22.     hf.Write(m_strContents,len);
    23.     InternetCloseHandle( hINet );
    24. }

    để download toàn bộ source code của trang web thì phải thêm gì nữa ạ, thanks.

  6. #6
    Ngày gia nhập
    07 2010
    Nơi ở
    chỗ kín
    Bài viết
    446

    Mặc định lấy nội dung file html có chọn lọc như thế nào?

    để chi down text thì dùng cách trên,
    để down toàn bộ ảnh thì phải tìm tất cả các URL ảnh trong file html rồi down về.

Các đề tài tương tự

  1. Lấy nội dung trong thẻ html sủ dụng Regular Expression
    Gửi bởi hoangc5 trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 15
    Bài viết cuối: 17-06-2013, 08:14 AM
  2. giúp đỡ em làm thế nào để phát sinh một trang html nội dung như trang tuoitre.vn
    Gửi bởi xuanhoang0210 trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 3
    Bài viết cuối: 19-03-2013, 08:02 PM
  3. Đọc nội dung thẻ title trong file html bằng C#?
    Gửi bởi billle trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 5
    Bài viết cuối: 29-08-2012, 04:21 PM
  4. Chuyển 1 file html 25mb sang file word như thế nào ?
    Gửi bởi hoanglinh9466 trong diễn đàn Thắc mắc chung
    Trả lời: 3
    Bài viết cuối: 26-06-2011, 11:28 PM
  5. Đọc nội dung file HTML bằng C#
    Gửi bởi nvbachau trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 05-05-2010, 09:16 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn