Thu thập dữ liệu web bằng python

Bởi Kiên Smart Data
0 Nhận xét
Thu thập dữ liệu RSS bằng Python

Python là một trong các ngôn ngữ lập trình đơn giản nhưng cực kì mạnh trong khoa học dữ liệu. Bài viết này SmartData sẽ hướng dẫn các bạn cách thu thập dữ liệu web bằng Python. Cụ thể chúng ta sẽ thu thập dữ liệu về các bài báo được đăng trên các trang báo điện tử nổi tiếng thông qua RSS

RSS là gì?

RSS viết tắt của từ Really Simple Syndication – Đồng bộ hóa cực kì đơn giản

RSS là một tập tin thường được biểu diễn dưới dạng XML có nhiệm vụ tóm tắt thông tin giúp cho người đọc dễ dàng tìm kiếm cũng như cập nhật nội dung.

Bạn có thể tham khảo một số đường link RSS của một số trong báo điện tử phía dưới:

Thông tin dạng XML được biểu diễn trong RSS của vietnamnet.vn
Thông tin dạng XML được biểu diễn trong RSS của vietnamnet.vn

Trong khuôn khổ bài viết này, SmartData sẽ hướng dẫn các bạn cách viết một ứng dụng bằng Python để thu thập dữ liệu RSS trên một đường link của báo Vietnamnet. Cụ thể là link sau:

  • https://ictnews.vietnamnet.vn/rss/thong-tin-truyen-thong/toan-van-phat-bieu.rss

Cần chuẩn bị những gì?

Để bắt đầu phát triển ứng dụng phân tích RSS trên bằng Python bạn cần chuẩn bị một số thứ sau:

  • Môi trường phát triển ứng dụng Python -> Bạn có thể tham khảo bài viết này để tìm hiểu cách cài đặt môi trường phát triển ứng ụng Python trên máy tính windown
  • IDE để viết mã nguồn Python -> Có thể lựa chọn một số IDE phổ biến của Python như PyCharm, anaconda, Visual Studio Code
  • Kĩ năng thao tác cơ bản với ngôn ngữ lập trình Python
  • Kĩ năng sử dụng một số thư viện như requests, csv, xml

Ý tưởng của ứng dụng

Ứng dụng sẽ có một số chức năng chính sau:

  • Thu thập thông tin từ đường link: https://ictnews.vietnamnet.vn/rss/thong-tin-truyen-thong/toan-van-phat-bieu.rss
  • Lưu trữ thông tin thu thập được vào một file có tên thong-tin-truyen-thong.xml
  • Phân tích file thong-tin-truyen-thong.xml để tách ra các thông tin cần thiết bao gồm:
    • Guid: Thông tin định dạng các item trong nội dung xml
    • link: Đường dẫn chi tiết của bài báo
    • PubDate: Ngày bài báo được publish
    • title: Tiêu đề của bài viết
    • description: Mô tả của bài viết
    • media:content: File ảnh thumbnail của bài viết
  • Lưu trữ thông tin vừa phân tích được ra một file dạng csv làm đầu vào cho quá trình làm sạch dữ liệu hoặc đầu vào cho các ứng dụng khác.

Viết mã nguồn

Tạo file fetch-rss.py

Sau khi đã cài đặt môi trường thành công. Hãy bắt tay vào tạo một file fetch-rss.py. Đây là sẽ file chứa phần mã nguồn ứng dụng của bạn

Tạo file fetch-rss.py
Tạo file fetch-rss.py

Import các thư viện cần dùng

Ứng dụng nhỏ này sẽ cần sử dụng một số thư viện như requests, csv, xml. Để sử dụng các bạn thực hiện import các thư viện này vào file mã nguồn

import requests import csv import xml.etree.ElementTree as et

Viết các hàm thu thập, phân tích và lưu trữ

Hàm Thu thập dữ liệu từ link RSS

# Truy cập nội dung link rss và tải nội dung xuống file thong-tin-truyen-thong.xml def loadRSS(url, fileName): response = requests.get(url) with open(fileName, 'wb') as f: f.write(response.content)

Hàm đẩy dữ liệu thu thập được ra file CSV

def savetoCSV(newsitems, filename): fields = [ 'guid', 'link', 'pubDate', 'category', 'title', 'description', 'media', ] # Viết dữ liệu ra file csv with open(filename, 'w', encoding='utf-8') as csvfile: writer = csv.DictWriter(csvfile, fieldnames=fields) writer.writerows(newsitems)

Hàm phân tích dữ liệu thu thập được

def parseRSS(xmlFileName): rssTree = et.parse(xmlFileName) root = rssTree.getroot() newsitems = [] for item in root.findall('./channel/item'): news = {} for child in item: if child.tag == '{http://search.yahoo.com/mrss/}content': news['media'] = child.attrib['url'] else: news[child.tag] = child.text newsitems.append(news) return newsitems

Hàm main để chạy ứng dụng

def main(): loadRSS( "https://ictnews.vietnamnet.vn/rss/thong-tin-truyen-thong/toan-van-phat-bieu.rss", "thong-tin-truyen-thong.xml") newsitems = parseRSS("thong-tin-truyen-thong.xml") savetoCSV(newsitems, 'thong-tin-truyen-thong.csv') if __name__ == "__main__": main() 

Chạy ứng dụng

Để thực hiện chạy ứng dụng, bạn gõ lệnh py fetch-rss.py trên cửa sổ terminal.

Kết quả

Sau khi ứng dụng chạy thành công, Đây sẽ là kết quả bạn nhận được

File thong-tin-truyen-thong.xml

File thong-tin-truyen-thong.csv

Kết luận

Như vậy bài viết trên SmartData đã hướng dẫn các bạn cách cơ bản để xây dựng một ứng dụng thu thập dữ liệu web bằng Python. Trên thực tế các bài toán thu thập dữ liệu khá phức tạp và đòi hỏi nhiều công đoạn khác nữa. Nếu có bất cứ thắc mắc nào đừng ngần ngại để lại comment xuống phía dưới.

Nếu bạn là newbie có thể tham khảo bài viết này để tìm hiểu lộ trình học DA trong 6 tháng của SmartData

Bài viết liên quan

Để lại nhận xét

Copyright @2022 – Bản quyền thuộc Học viện dữ lệu Smart Data