Lấy dữ liệu từ web bằng python

     

Hôm ni bản thân vẫn cùng các bạn tìm hiểu về một Module khá phổ cập của Pynhỏ nhắn chính là Request cùng cùng sử dụng nó để gia công một tool crawl tài liệu nhé. trước hết coi thử sau bài bác này bọn họ đã có tác dụng được gì như thế nào.

Bạn đang xem: Lấy dữ liệu từ web bằng python

*
*

Sau bài viết này chúng ta đã crawl được tất cả đầy đủ tin tứcbắt đầu từ 1 trang báo điện tử và thực hiện bọn chúng để tạo nên đầy đủ chủng loại tin tức nkhô hanh nhỏng trên hình ảnh cùng với 4 bước chính:

Cài đặt moduleLấy list thông tin new nhấtLấy dữ liệu thông tin cụ thể từng bàiTạo mọi mẫu tin tức nkhô hanh từ tài liệu sinh hoạt trên

Cùng ban đầu thôi!!

1. Cài đặt Module (Hướng dẫn trên cmd Window)

Cài đặt Requests:

pip install requests (hoặc pykhiêm tốn –m pip install requests)​Cài đặt Pilow:pip install Pillow (hoặc pythuôn –m pip install Pillow)​*Note: Nếu xài PIP.. cũ thì phần nhiều bạn update lên pip bắt đầu trước khi thiết lập Pillow nhé:

Update PIP:

pip install -–nâng cấp pip (hoặc pykhiêm tốn –m pip install -–upgrade pip)Trong quy trình cài đặt nếu có lỗi gì thì phần đông người post lên để thuộc search phương pháp fix nhé!

2. Cào tài liệu danh sách thông tin mới

2.1. Lấy dữ liệu

Hiểu nôm mãng cầu thì module Request dùng để làm gửi HTTP request, hệt như thao tác chúng ta thường có tác dụng khi lướt mạng: Vào trình chú tâm gõ nguyenminhchau.com cùng enter, các bạn sẽ nhận thấy đồ họa của website hoặc một dạng tài liệu không giống. Để mang được dữ liệu trả về thì ta cần sử dụng một module cung cấp và Request để giúp đỡ chúng ta làm cho điều ấy. Cùng nhau mày mò những cần sử dụng nhé!

requests.method(url, params, data, json, headers, cookies, files, auth, timeout, allow_redirects, proxies, verify, stream, cert)What?? Cần nhiều tsi số rứa cơ á? Không, chúng ta chỉ cần lấy dữ liệu xuất phát điểm từ một site tin tức tức thôi, ko buộc phải gửi đi dữ liệu gì cả. Hãy thử thế này nhé.

Xem thêm: 7 Website Đăng Tin Rao Vặt Miễn Phí Không Cần Đăng Ký San Diego County

import requestsresponse = requests.get("https://tuoitre.vn/tin-moi-nhat.htm")print(response)Và đây là kết quả:

Thật làNo hope , chúng ra đang đề xuất một trang web tuy thế. Thử Hotline vài trực thuộc tính ra test coi nào:

print(response.content)Kết quả:

Tin mxe1xbbx9bi nhxe1xbaxa5t - Tuxe1xbbx95i trxe1xbaxbb Online…(còn nữa>…Chúng ra đã lấy được tài liệu của một website, sự việc hiện giờ là bóc tách dữ liệu.

2.2. Tách dữ liệu

Có những cách để tách bóc bóc dữ liệu xuất phát điểm từ 1 văn uống bạn dạng dài, sử dụng regex (biểu thức chính quy) cũng là 1 trong những cách mà lại thực tế thì pybé nhỏ đang hỗ trợ dạn dĩ hơn. Cùng mày mò về module beautifulSoup4 nhé.

Cách cài đặt:

pip install beautifulsoup4 (hoặc python –m pip install beautifulsoup4Beautiful Soup sẽ giúp chúng ta so sánh dữ liệu HTML hay XML thành tài liệu cây, trường đoản cú kia góp bọn họ tầm nã xuất dữ liệu thuận tiện hơn. Cùng test test nhé

import requestsfrom bs4 import BeautifulSoupresponse = requests.get("https://tuoitre.vn/tin-moi-nhat.htm")soup = BeautifulSoup(response.nội dung, "html.parser")print(soup)Thành quả là các bạn sẽ được in ra một trang html khôn cùng Gọn gàng như vậy này:

*

2.3. Phân tích dữ liệu

Cách tiếp theo sau là họ bắt buộc so với coi tài liệu cần mang sinh hoạt đâu. Rõ ràng để lấy dữ liệu cụ thể một bài xích báo ta đề nghị links đến bài xích kia nhỉ. Bật f12 lên và so sánh chút:

*

Sau thời hạn dò mẫm, chúng ta có thể search thấy links bài bác báo sinh sống vào thẻ và thẻ này phía bên trong thẻ h3 bao gồm class “title-web1_news”. Vậy quá trình của chúng ra là thanh lọc tất cả thẻ h3 tất cả class “title-web1_news” và mang thẻ a trong nó, cùng code tiếp nào:

titles = soup.findAll("h3", class_="title-web1_news")print(titles)Sau lúc thêm đoạn này chúng ta sẽ được một mảng những thẻ h3 là title bài báo:

*

Tiếp tục quá trình tiếp sau là rước links của tất cả những nội dung bài viết đó:

liên kết = for links in titles>print(links)Kết quả:

3. Lấy tài liệu chi tiết từng bài

OK coi nhỏng họ đã lấy được tất cả nội dung bài viết. Công việc tiếp theo sau là truy vấn từng nội dung bài viết, đem một ảnh làm cho thay mặt đại diện với một quãng trích ngắn. Do phần này tương tự trên nên mình lướt nkhô nóng một chút:

for link in links: web1_news = requests.get("https://tuoitre.vn" + link) soup = BeautifulSoup(web1_news.content, "html.parser") title = soup.find("h1", class_="article-title").text abstract = soup.find("h2", class_="sapo").text toàn thân = soup.find("div", id="main-detail-body") content = body.findChildren("p", recursive=False)<0>.text + body toàn thân.findChildren("p", recursive=False)<1>.text image = body toàn thân.find("img").attrs<"src"> print("Tiêu đề: " + title) print("Mô tả: " + abstract) print("Nội dung: " + content) print("Ảnh minch họa: " + image) print("_________________________________________________________________________")Vậy là kết thúc phần crawl dữ liệu rồi. Cũng đơn giản dễ dàng cần không? Mình vẫn giải thích chút ít xíu

Đầu tiên bọn họ cần sử dụng một vòng for-loop nhằm lưu ý qua tất cả các liên kết với truy cập những links kia, các bạn để ý bởi href của thẻ a đã không tồn tại link gốc (dạng “/router-ne”) yêu cầu bọn họ đề nghị cnhát thêm BASE URL vào nhé :

requests.get("https://tuoitre.vn" + link)Ở bước lấy title, nắm tắt cùng ảnh. Bạn bật f12 lên mày mò một tí là ra. Còn phần nội dung bản thân phải tra cứu 2 thẻ p con chỉ dưới