Lấy nội dung bài viết từ url trong Python

Giả sử mình có 1 url sau khi lấy được html rồi mình muốn lấy nội dung trong thẻ <div id="divNewsContent"> ra thì làm thế nào mình dùng Python

1 Like

@thanhmssl10 :smiling_imp:
Giúp bạn ấy đi kìa

Bạn có thể dùng beautifulsoup hoặc regex

Mình đã thử dùng re nhưng ko thành ban xem html của trang rồi bày giúp m được ko

1 Like

Nên dùng Beautiful soup hoặc các html parser tương tự bạn ạ, regex thì trừ khi dùng cho biết cách dùng chứ nên tránh :smile:

@TheSky Thời này ai dùng lib nữa, phải chơi find xong cắt chuỗi mới gọi là pro :joy:

1 Like

việc find và cắt thì mình hoàn toàn có thể làm đk :), còn cái bs4 bạn xem cái html của trang rồi cho m đoan code lấy content được không :((

1 Like

Mình troll vui thôi bạn chứ ai dùng vậy :smile:

1 Like

@JuniorK Beautiful soup bạn dùng thử cái này xem thế nào đi :laughing: Đôi khi phân vân quá cũng không hay đâu.
Còn cách

Thì chỉ có @thanhmssl10 thần thánh mới làm được thôi :smiling_imp: :smiling_imp: :smiling_imp:

1 Like

Kiểu như này này:


In [11]: r = s.get('http://dantri.com.vn/the-gioi/khong-tac-khong-che-may-bay-ai-cap-vi-muon-gui-thu-cho-vo-cu-2016032915181413.htm')

In [12]: soup = BeautifulSoup(r.text, 'html.parser')
In [13]: result = soup.select(".fon31.mgb15")
In [14]: result[0]
Out[14]: <h1 class="fon31 mgb15">\r\n    Kh\xf4ng t\u1eb7c kh\u1ed1ng ch\u1ebf m\xe1y bay Ai C\u1eadp v\xec mu\u1ed1n g\u1eedi th\u01b0 cho v\u1ee3 c\u0169</h1>


1 Like

cảm ơn bạn mình đã lấy đk nội dung của thẻ divNewsContent giờ chỉ clear html là xong :slight_smile:

2 Likes

Thêm .text là xong

1 Like

À chuẩn rồi :thumbsup: u , bạn thêm cái .text là sẽ lấy được phần text bên trong :smile:

In [22]: soup.select(".fon31.mgb15")[0].text
Out[22]: u'\r\n    Kh\xf4ng t\u1eb7c kh\u1ed1ng ch\u1ebf m\xe1y bay Ai C\u1eadp v\xec mu\u1ed1n g\u1eedi th\u01b0 cho v\u1ee3 c\u0169'
1 Like

response = requests.get(url) parsed_body = html.fromstring(response.text) check = parsed_body.xpath('//div[@id="divNewsContent"]/h1/text()')

mình dùng cái cách này cơ mà thỉnh thoảng không lấy được thì phải :slight_smile:

cho e hỏi thêm là nếu muốn lấy nội dung bài báo đó thì làm ntn ạ , e mới tìm hiểu , thanks

Cái này bạn phải xem cấu trúc file HTML của trang như thế nào nhé. Ví dụ như tag/class nào quy định title, cái nào quy định nội dung,…

Có thư viện html.parser để lấy parse nội dung từ 1 file html hoàn chỉnh.

2 Likes

tại m của cũng chỉ biết sơ sơ html nên chưa rõ , bạn có thể vd thêm đc k vậy , vd như lấy nd bài báo này http://dantri.com.vn/the-gioi/lo-bay-no-myanmar-thu-hep-du-an-cang-7-ty-usd-voi-trung-quoc-20180802211534508.htm

Mở trên trình duyệt:

view-source:http://dantri.com.vn/the-gioi/lo-bay-no-myanmar-thu-hep-du-an-cang-7-ty-usd-voi-trung-quoc-20180802211534508.htm

  • Gõ nội dung title vào để xem nó ở đâu.
  • Gõ tiếp từ 3 chữ đầu của phần chữ xám xem ở đâu.
  • Tiếp 2 link dưới
  • Tiếp nội dung.

Kết luận các format:

Title:

<h1 class="fon31 mgb15">
    {title}</h1>

Phần ngay dưới:

<h2 class="fon33 mt1 sapo">
    <span>Dân trí</span> {summary}<br /><a href={link1} title={linktitle1}><b>&nbsp;&gt;&gt;&nbsp;{title1}</b></a><br /><a href={link2} title={linktitle2}><b>&nbsp;&gt;&gt;&nbsp;{title2}</b></a>
</h2>

Các phần sau tự làm tương tự.

3 Likes

tuyệt , cảm ơn HK boy

A post was merged into an existing topic: Topic lưu trữ các post off-topic - version 3

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?