Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 11 kết quả

Đề tài: Cách bóc tách dữ liệu 1 trang web như thế nào?

  1. #1
    Ngày gia nhập
    09 2011
    Bài viết
    129

    Question Cách bóc tách dữ liệu 1 trang web như thế nào?

    mình có trang web http://www.marinetraffic.com/ais/datasheet.aspx?datasource=SHIPS_CURRENT&alpha=A&mo de=&orderby=SHIPNAME&sort_order=ASC&var_page=3 giờ mình muốn lấy tất cả danh sách các tàu trong trang web đó thì lấy thế nào? Các bạn giúp mình với (ai biết cách sử dụng Regex thì càng tốt )

  2. #2
    Ngày gia nhập
    11 2010
    Nơi ở
    Tầng cao nhất tháp đôi Mỹ........
    Bài viết
    48

    Mình thấy trong Excel có cái search content từ website đấy bạn thử sử dụng nó xem sao. Nếu dùng mỗi excel để lấy dữ liệu thôi thì pm mình gửi file excel cho

  3. #3
    Ngày gia nhập
    01 2012
    Nơi ở
    localhost
    Bài viết
    140

    Bạn xem source trang web sẽ thấy nó chỉ có 1 table (<table). Bỏ 2 hàng đầu (<tr). Từ hàng thứ 3 trở đi là thông tin, mỗi hàng có nhiều ô (<td)
    Ví dụ đây là mã HTML, giờ bạn chỉ việc xử lý chuỗi cho khéo là sẽ lấy được.
    HTML Code:
    1. <tr class="odd">
    2. <td align="left"><font class="data"><a class="data" href="default.aspx?zoom=10&amp;mmsi=413353450&amp;centerx=122.1138&amp;centery=29.3834"><img border="0" src="shipicons/lightgreen1_355.png" alt=""></a></font></td>
    3. <td align="left"><font class="data"><a class="data" href="shipdetails.aspx?MMSI=413353450">AG  XIN TAI 18</a></font></td><td align="left"><font class="data">Cargo - Hazard A (Major)</font></td><td align="left"><font class="data">8.8</font></td>
    4. <td align="left"><font class="data">356</font></td>
    5. <td align="left"><font class="data">TIAM JIN</font></td>
    6. <td align="left"><font class="data">2012-03-04 12:00</font></td>
    7. <td align="left"><font class="data"><a class="data" href="default.aspx?centerx=&amp;centery=&amp;zoom=">&nbsp;</a></font></td>
    8. <td align="left"><font class="data">China Sea</font></td>
    9. <td align="left"><font class="data"><a class="data" href="default.aspx?zoom=10&amp;mmsi=413353450&amp;centerx=122.1138&amp;centery=29.3834">2012-03-02 14:20</a></font></td>
    10. <td align="left"><font class="data"><a class="data" href="default.aspx?zoom=10&amp;mmsi=413353450&amp;centerx=122.1138&amp;centery=29.3834"> Show on Map</a></font></td>
    11. </tr>
    Rẹt rẹt..

  4. #4
    Ngày gia nhập
    10 2009
    Bài viết
    3

    Code:
    bienchuoi.Split(new string[]{"chuoigido"}, StringSplitOptions.None);
    cái phương thức này sẽ giúp ích cho bạn
    http://matxich.net Web xem film cho mọi người

  5. #5
    Ngày gia nhập
    09 2011
    Bài viết
    129

    Mặc định bóc tách dữ liệu web

    cám ơn các bạn đã góp ý!
    sau 1 time tìm hiểu mình đã tìm được phương pháp bóc tách dữ liệu bằng RegularExpressions hay nói thường gọi là biểu thức chính qui..dùng cái này rất tiện và gọn code có điều cần tìm hiểu kỹ về biểu thức chính qui thì mới làm được ...bạn nào tò mò có thể tìm hiểu cho vui ^^
    VD với đoạn code HTML của bạn Sim thì mình có biểu thức chính qui để tách lấy tên tàu, kiểu tàu, tốc độ, hướng, đích, ngày tháng dự tính, vùng biển đang hoạt động, toadox, toadoy, thoigian như sau

    string pattern = @".*?MMSI=.*?>(?<shipname>.*?)</a><.*?'data'>(?<shipname>.*?)</font>.*?(?<Speed>((\d+)|((\d+).(\d+))))<.*?'data'> (?<Course>(\d+))</font>.*?'data'>(?<destination>.*?)</font>.*?>(?<timeDuKien>((\d+)-(\d+)-(\d+) ((\d+):(\d+)))|)</font>.*?&centerx=(?<x>((-(\d+).(\d+))|((\d+).(\d+))))&centery=(?<y>((-(\d+).(\d+))|((\d+).(\d+))))'>(?<time>(\d+)-(\d+)-(\d+) ((\d+):(\d+)))</a>";
    Regex myRegex = new Regex(pattern);
    MatchCollection matches = myRegex.Matches(strweb);
    foreach (Match match in matches)
    {
    //lam cai j do
    }
    Đã được chỉnh sửa lần cuối bởi tientrungkaka : 26-03-2012 lúc 10:29 PM.

  6. #6
    Ngày gia nhập
    03 2012
    Bài viết
    96

    Mặc định Cách bóc tách dữ liệu 1 trang web như thế nào?

    Trước tiên bạn phải hiểu về html và xpath. Sau đó dùng 1 thư viện chuyển đổi html thành đối tượng như htmlAgility chẳng hạn. Bạn có thể search trên đối tượng html thay vì phân tích chuỗi như trên.

  7. #7
    Ngày gia nhập
    09 2011
    Bài viết
    129

    Trích dẫn Nguyên bản được gửi bởi sugarman Xem bài viết
    Trước tiên bạn phải hiểu về html và xpath. Sau đó dùng 1 thư viện chuyển đổi html thành đối tượng như htmlAgility chẳng hạn. Bạn có thể search trên đối tượng html thay vì phân tích chuỗi như trên.
    bạn có thể nói cụ thể hơn chút ko? cho 1 ví dụ cụ thể thì càng tốt :d
    nếu có cách khác hay hơn thì hay quá

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi. Dùng biểu thức chính quy có vẻ hay đó. Đợt nọ mình có làm một cái lấy dữ liệu từ web quét tầm 500 pages( vì nó phân trang), mình xài cách đọc dữ liệu kiểu XML. Kiểu đó dùng cũng được.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  9. #9
    Ngày gia nhập
    09 2011
    Bài viết
    129

    Trích dẫn Nguyên bản được gửi bởi mrfour.it Xem bài viết
    hi. Dùng biểu thức chính quy có vẻ hay đó. Đợt nọ mình có làm một cái lấy dữ liệu từ web quét tầm 500 pages( vì nó phân trang), mình xài cách đọc dữ liệu kiểu XML. Kiểu đó dùng cũng được.
    huc mình cũng đang gặp vấn đề về số lượng đây, mình cũng phải quét 26 chữ cái mỗi chữ cái 10 trang, mỗi trang 50 phần tử và mỗi phần tử tương ứng lại quét 1 phát nữa :(( mà mình phải quét liên tụddeeer cập nhật kịp thời dữ liệu mới vì nó lên xuống thất thường mà ...bạn có kinh nghiệm j về tốc độ quét về share mình với? bạn có dùng xử lý đa luồng hay song song j đó ko???

  10. #10
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hi. Đợt nọ t chỉ phải lấy dữ liệu xong rồi thui. Ko phải update liên tục. Mà nếu bạn update liên tục vậy thì phải xài bên Ajax/JS/jquery gì chứ? sao lại chơi ở server?
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

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

  1. Algorithm Cách nào để bóc tách dữ liệu 1 trang HTML và đổ lên Listview ?
    Gửi bởi NguyenDuyPC trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 37
    Bài viết cuối: 03-08-2013, 02:55 PM
  2. Chương trình bóc tách tin tự động đã có phiên bản 2.0 có thể lấy tin về component K2
    Gửi bởi sale4nhutcorp trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 8
    Bài viết cuối: 11-03-2013, 02:48 PM
  3. Chương trình bóc tách tin tự động đã có phiên bản 2.0 có thể lấy tin về component K2
    Gửi bởi sale4nhutcorp trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 11-03-2013, 02:47 PM
  4. Chương trình bóc tách tin tự động đã có phiên bản 2.0 có thể lấy tin về component K2
    Gửi bởi sale4nhutcorp trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 08-03-2013, 04:01 PM
  5. Kẻ bóc lột
    Gửi bởi vietsnets1 trong diễn đàn Giải trí - Thư giãn
    Trả lời: 3
    Bài viết cuối: 27-09-2011, 03:33 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