<jupyter_start><jupyter_text>get-images: Dùng BeautifulSoup để crawl dữ liệu hình ảnh và video trên bài viết 1. Import thư viện để crawlDùng thư viện BeautifulSoup, tài liệu về thư viện [BeautifulSoup](https://www.crummy.com/software/BeautifulSoup/bs4/doc/) trong link. Version 2 của web crawler được dựa trên các bài viết sau:1. [Web crawling với thư viện BeautifulSoup](https://viblo.asia/p/web-crawling-voi-thu-vien-beautifulsoup-1VgZvNGOZAw)2. [\[Python\] Viết một web crawler](https://mocmeodx.wordpress.com/2016/08/16/python-viet-mot-web-crawler/)3. [Kỹ thuật Scraping Trang web trong Python bằng Beautiful Soup: Cơ bản](https://code.tutsplus.com/vi/tutorials/scraping-webpages-in-python-with-beautiful-soup-the-basics--cms-28211)<jupyter_code>import json
from bs4 import BeautifulSoup<jupyter_output><empty_output><jupyter_text>2. Các dữ liệu tin tức URL tin tức nói chung, chúng ta thử nghiệm việc lấy hình ảnh trên một số trang tin tức chính thống lẫn không chính thống<jupyter_code>news_urls = ['https://thanhnien.vn/thoi-su/tam-giu-chiec-xe-may-bi-mat-trom-do-mot-nguoi-my-dieu-khien-1008595.html',
             'https://vnexpress.net/tin-tuc/thoi-su/thong-nga-tren-deo-prenn-giao-thong-tac-nghen-2-gio-3816674.html'
            ]<jupyter_output><empty_output><jupyter_text>Bắt đầu crawl dữ liệu tin tức giả đưa vào list fake_articles<jupyter_code>fake_articles = []
for fake_url in fake_news_urls:
    fake_articles.append(NewsPlease.from_url(fake_url))<jupyter_output><empty_output><jupyter_text>Tên của các file json sẽ chứa nội dung vừa crawl<jupyter_code>fake_no = 9
fake_prefix = 'VFND_Ac_Fake_'<jupyter_output><empty_output><jupyter_text>Đưa các dữ liệu vừa crawl vào các file json dữ liệu. Các thông số cho json.dump lần lượt là: __default = str__ đưa tất cả về string để tránh lỗi trong quá trình parse dữ liệu dạng _datetime_ sang json của các trường date\_modify, date\_download, date\_publish; __ensure\_ascii=False__ là để giữ các dữ liệu text ở dạng Unicode - để không bị lỗi khi đưa vào file json khi để text ở định dạng Unicode, thì trong phần __open()__ đặt thông số _encoding='utf-8'_.<jupyter_code>for fake in fake_articles:
    fake_name = fake_prefix + str(fake_no) + '.json'
    fake_no = fake_no + 1
    
    with open(fake_name, 'w', encoding='utf-8') as outfile:
        json.dump(fake.__dict__, outfile, indent=4, sort_keys=True, default=str, ensure_ascii=False)<jupyter_output><empty_output><jupyter_text>Test các kết quả trả ra khi crawl ở cell dưới<jupyter_code>print (fake_articles[1].__dict__)<jupyter_output><empty_output><jupyter_text>3. Các dữ liệu tin tức thật<jupyter_code>real_news_urls = ['https://news.zing.vn/bo-cong-thuong-ket-luan-con-cung-co-sai-sot-nhung-khong-ban-hang-gia-post869549.html'
        
                 ]<jupyter_output><empty_output><jupyter_text>Bắt đầu crawl dữ liệu<jupyter_code>real_articles = []
for real_url in real_news_urls:
    real_articles.append(NewsPlease.from_url(real_url))
real_no = 7
real_prefix = 'VFND_Ac_Real_'<jupyter_output><empty_output><jupyter_text>Tương tự với việc crawl dữ liệu về tin tức giả<jupyter_code>for real in real_articles:
    real_name = real_prefix + str(real_no) + '.json'
    real_no = real_no + 1
    with open(real_name, 'w', encoding='utf-8') as outfile:
        json.dump(real.__dict__, outfile, indent=4, sort_keys=True, default=str, ensure_ascii=False)<jupyter_output><empty_output><jupyter_text>Test các kết quả trả ra khi crawl ở cell dưới<jupyter_code>print(real_articles[1].__dict__)<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.10664780763790664, 'fraction_numerical': 0.015558698727015558, 'mean_word_length': 5.086058519793459, 'pattern_counts': {'":': 0, '<': 41, '<?xml version=': 0, '>': 41, 'https://': 7, 'lorem ipsum': 0, 'www.': 1, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 1, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '10', 'dir': 'jupyter-structured-clean-dedup', 'id': '274708', 'license': 'MIT', 'n_tokens_mistral': 1627, 'n_tokens_neox': 1576, 'n_words': 309, 'path': 'Utils/get-images.ipynb', 'repo_name': 'thaondc/vfnd-vietnamese-fake-news-datasets', 'size': '3535'}