01/10/2018, 16:22

Cách đọc file html trong python

Em mốt file có nhiều dữ liệu giống thế này, em lấy dữ liệu theo các cột như sau :
catId,content,newsId,publishDate,sapo,tags,title, em có thể làm thế nào vậy ạ. Em cám ơn mọi người.

catId,content,newsId,publishDate,sapo,tags,title
211,"<div class=""VCSortableInPreviewMode"" type=""Photo"">
<div><img style=""max-width: 100%;"" w=""600"" h=""392"" type=""photo"" rel=""https://genknews.vcmedia.vn/2016/w620h405f1c1-files-articles-2016-1094629-ly-gia-thanh-1-1452821622947-1452830346805.jpg"" src=""https://genknews.vcmedia.vn/k:2016/w620h405f1c1-files-articles-2016-1094629-ly-gia-thanh-1-1452821622947-1452830346805/ty-phu-ly-gia-thanh-mach-nuoc-nguoi-tre-lam-giau.jpg"" photoid=""182630"" id=""img_182630"" alt=""""></div>

<div class=""PhotoCMS_Caption""></div>
</div>

<p>Nói về quan điểm sống và làm giàu, tỷ phú Lý Gia Thành cho biết: ""Khi bạn nghèo, hãy ở nhà ít hơn và ra ngoài nhiều hơn. Khi bạn giàu có, hãy ở nhà nhiều hơn và ít ra ngoài hơn. Đây là nghệ thuật sống. Nếu là người nghèo, bạn nên chi tiền cho người khác, khi đã là người giàu, bạn mới chi tiền cho chính mình. Tuy nhiên, rất nhiều người đang làm điều ngược lại"".</p>

<p>Bạn chỉ có thu nhập 2.000 CNY/tháng (tương đương khoảng 6,8 triệu đồng)? Tỷ phú Lý Gia Thành tin rằng bạn vẫn có thể mua nhà và xe trong vòng 5 năm bằng cách mỗi tháng chia đều số tiền này ra làm 5 phần cho 5 mục đích khác nhau. ""Sau khi nỗ lực nghiêm ngặt trong vòng 1 năm, nếu thu nhập vào năm thứ 2 của bạn vẫn như cũ, hãy tự thấy xấu hổ vì điều đó"", tỷ phú Lý Gia Thành nói.</p>

<p>Sau đây là bí quyết chi tiêu hiệu quả của tỷ phú Lý Gia Thành với thu nhập 2.000 CNY/tháng:</p>

<p><strong>Phần đầu tiên (600 CNY) cho các chi phí ăn uống</strong></p>

<p>Bạn chỉ nên chi cho việc ăn uống ở mức dưới 20 CNY/ngày: ăn sáng với các loại bún hoặc mì, một quả trứng, 1 ly sữa; ăn trưa với một khẩu phần cơ bản, sau đó là một bữa ăn nhẹ và trái cây; tự nấu bữa tối chỉ với 2 loại rau và uống một ly sữa trước khi ngủ.</p>

<p>Tổng cộng chi phí ăn uống trong tháng nên dao động từ 500 – 600 CNY. Việc duy trì chế độ ăn uống này trong một vài năm gần như không ảnh hưởng gì đến sức khỏe của người trẻ.</p>

<p><strong>Phần thứ hai (400 CNY) cho việc kết bạn, mở rộng mạng lưới quan hệ</strong></p>

<p>Chi phí cước điện thoại của bạn nên ở mức 100 CNY. Bên cạnh đó, bạn cũng nên mời bạn bè 2 bữa trưa mỗi tháng, mỗi bữa khoảng 150 CNY.</p>

<p>Nên nhớ rằng, những người bạn được mời phải là người hiểu biết rộng hơn bạn, giàu có hơn bạn hoặc những người có thể giúp đỡ bạn trong sự nghiệp. Hãy làm việc này đều đặn mỗi tháng. Sau một năm, mạng lưới quan hệ này sẽ mang lại giá trị to lớn. Đồng thời, uy tín và sự ảnh hưởng của bạn cũng sẽ được nâng lên.</p>

<p><strong>Phần thứ ba (300 CNY) để học hành</strong></p>

<p>Bạn phải dành ra từ 50 – 100 CNY mỗi tháng để mua sách. Vì không có nhiều tiền nên bạn phải chú ý đến việc học hành. Hãy đọc sách một cách cẩn thận và tìm hiểu về các bài học và chiến lược hữu ích trong đó.</p>

<p>Sau khi đọc mỗi cuốn sách, hãy “chuyển thể” nội dung của nó sang “ngôn ngữ” của riêng bạn bằng cách kể lại những câu chuyện thú vị với người khác. Việc chia sẻ những giá trị như vậy cũng góp phần nâng cao độ tin cậy và tăng cường các mạng lưới quan hệ của bạn.</p>

<p>Ngoài ra, bạn phải dành 200 CNY mỗi tháng để tham gia một khóa đào tạo. Khi có thu nhập cao hơn, bạn cũng nên tham gia vào những khóa đào tạo nâng cao hơn. Việc này không chỉ giúp bạn tiếp thu thêm nhiều kiến thức bổ ích mà còn tạo cơ hội gặp gỡ bạn bè cùng chí hướng – những người bạn không dễ dàng được tiếp xúc hàng ngày.</p>

<p><strong>Phần thứ tư (200 CNY) cho kỳ nghỉ ở nước ngoài</strong></p>

<p>Hãy tự thưởng cho mình bằng cách đi du lịch nước ngoài ít nhất một lần trong năm để phát triển vốn sống. Nhằm tiết kiệm chi phí trong kỳ nghỉ, bạn có thể ngủ lại tại các nhà trọ giá rẻ.</p>

<p>Trong một vài năm, bạn có thể sẽ ghé thăm vài quốc gia và có nhiều trải nghiệm khác nhau. Hãy sử dụng những trải nghiệm đó để tái tạo năng lượng và cải thiện niềm đam mê công việc.</p>

<p><strong>Phần thứ năm (500 CNY) để đầu tư</strong></p>

<p>Số tiền 500 CNY/tháng sẽ đóng vai trò như một khoản vốn khởi nghiệp ban đầu. Đến khi số vốn này đã được kha khá, hãy tìm kiếm sản phẩm/dịch vụ phù hợp để kinh doanh.</p>

<p>Để an toàn, bạn có thể chỉ mở một doanh nghiệp nhỏ. Bởi vì thậm chí nếu kinh doanh thất bại, bạn cũng không bị mất quá nhiều tiền.</p>

<p>Việc bắt đầu kiếm tiền sẽ thúc đẩy sự tự tin và lòng can đảm, giúp bạn có một trải nghiệm học hỏi mới mẻ về cách điều hành một doanh nghiệp nhỏ.</p>

<p>Hãy kiếm nhiều tiền hơn, sau đó bạn có thể tiếp cận với các kế hoạch đầu tư dài hạn để có được một sự ổn định tài chính lâu dài cho bản thân và gia đình.</p>

<p style=""text-align: right;"">Theo<strong> </strong><em>DNSG/Addicted2success</em></p>

<div class=""VCSortableInPreviewMode link-content-footer"" type=""link-content-footer""><a draggable=""false"" href=""http://genk.vn/tin-ict/chan-dung-ty-phu-khong-tien-cua-my-o-nha-thue-va-deo-dong-ho-15-usd-20160112165533435.chn"" type=""2"">Chân dung tỷ phú ""không tiền"" của Mỹ: Ở nhà thuê và đeo đồng hồ 15 USD</a></div>
",20160115110049,2016-01-15 11:01:55,"Với giá trị tài sản ròng lên đến 29,5 tỷ USD (tính đến ngày 12/1/2016), tỷ phú Lý Gia Thành là người dẫn đầu danh sách 50 người giàu nhất Hong Kong và đứng thứ 31 trong danh sách ""Những người quyền lực nhất thế giới năm 2015"" của tạp chí Forbes.",,"Tỷ phú Lý Gia Thành ""mách nước"" người trẻ làm giàu"
Boy Dốt Toán viết 18:28 ngày 01/10/2018

Đọc file html thì theo kiến thức hạn hẹp của mình thì bạn nên tìm hiểu crawl data by Python với BeautifulSoup hoặc Scrapy

HK boy viết 18:24 ngày 01/10/2018

File này không phải file HTML nhé. Nó chỉ chứa nội dung HTML thôi.

Với format này bạn có thể tách các thành phần bằng hàm riêng, vì mỗi dữ liệu của các cột chứa rất nhiều kí tự ,".

  • catId là 1 số.

  • content là 1 đống chữ, chứa các tag HTML, bọc bởi cặp " ".

  • newsId cũng là 1 số

  • publishDate theo khuôn dạng YYYY-MM-DD hh:mm:ss

  • sapo là 1 đống chữ, bọc bởi cặp " "

  • tags thì mình không biết, ví dụ bạn đưa ra không có tags

  • title vẫn là 1 đống chữ, bọc bởi cặp " "

Bạn có thể viết hàm parse thế này:

  • For từng kí tự trong tổng thể nội dung.

  • Nếu đọc xong thành phần nào trong catId, content, newsId, publishDate, sapo, tags, title (ví dụ như gặp kí tự , trong khi đã đọc 1 đống số; hay gặp phải dấu ") thì lập tức chuyển ngay sang đọc thành phần tiếp theo.

  • Quy tắc đọc các thành phần được bọc bởi " " theo quy tắc dấu ngoặc.

Sau khi tách thành phần xong, nếu như cần thiết phải parse html, sử dụng thư viện html.parser

Xem thêm: Structured Markup Processing Tools (về HTML, XML).

Nobita viết 18:32 ngày 01/10/2018

em cám ơn, để em thử

Trọng Nghĩa viết 18:29 ngày 01/10/2018

Nhanh và đơn giản nhất thì bạn tham khảo Beautifulsoup. Còn muốn try hard thì regex :)))

Nobita viết 18:36 ngày 01/10/2018

anh ơi. mình làm thế nào để biết đọc xong từng thành phần. Ví dụ sau khi đọc sau thành phân catId (là số lên next sang cái khác) ,tiếp đến contends , thì mình sẽ xử lý để lấy ra nộ dung. Không biết có cách nào đưa hết ra 1 mảng 2 chiều không ạ.

HK boy viết 18:25 ngày 01/10/2018

Bạn đang đọc 1 thành phần số, nếu đọc được 1 kí tự không phải số thì tức là thành phần hiện tại đã đọc hết, chuyển sang thành phần tiếp theo.

Format file cũng không đúng chuẩn lắm, bạn thấy rằng toàn bộ những quote trong phần <p> </p>, những quote trong các thẻ HTML đều ở dạng "" "", cần chuyển toàn bộ chỗ double double-quote này thành single double-quote (" ") và chuyển những dấu " không cần thiết thành '. Như vậy thì mỗi thành phần text sẽ nằm trong 1 cặp ' '.

Ví dụ:

Thông tin ban đầu có "tôi rất yêu <b>""mọi người""</b>"

-> Thông tin lúc sau là 'tôi rất yêu <b>"mọi người"</b>'

Nobita viết 18:27 ngày 01/10/2018

dữ liệu em cho đã như thế sẵn rồi, mục chục MB lần, em nghĩ không thể sửa được hết ạ

Bài liên quan
0