logo proxyscrape gelap

Web Scraping untuk Artikel Berita menggunakan Python- Cara Terbaik di Tahun 2024

Python, Jan-03-20235 menit baca

Berita adalah cara terbaik untuk mempelajari apa yang terjadi di seluruh dunia. Bagi para insinyur data, artikel berita adalah salah satu cara terbaik untuk mengumpulkan data dalam jumlah besar. Lebih banyak data berarti lebih banyak wawasan, dan itulah satu-satunya cara untuk berinovasi dalam teknologi kita dan membawa kemanusiaan kita ke tingkat yang lebih tinggi dari sebelumnya. Namun ada banyak berita, dan secara manusiawi tidak mungkin untuk mendapatkan semua data secara manual. Apa cara terbaik untuk mendapatkan data secara otomatis? Jawabannya adalah web scraping untuk artikel berita menggunakan python.

Pada artikel ini, kita akan membuat web scraper untuk mengikis artikel berita terbaru dari berbagai surat kabar dan menyimpannya sebagai teks. Kita akan membahas dua langkah berikut ini untuk mendapatkan analisis mendalam tentang bagaimana keseluruhan proses dilakukan.

  1. Pengenalan tingkat permukaan ke halaman web dan HTML.
  2. Scraping web menggunakan Python dan pustaka terkenal bernama BeautifulSoup.

Jangan ragu untuk melompat ke bagian mana pun untuk mempelajari lebih lanjut tentang cara melakukan web scraping untuk artikel berita menggunakan python

Daftar Isi

Pengenalan Tingkat Permukaan ke Halaman Web dan HTML

Jika kita ingin mengambil informasi penting dari situs web atau halaman web mana pun, penting untuk mengetahui cara kerja situs web tersebut. Ketika kita membuka URL tertentu menggunakan peramban web apa pun (Chrome, Firefox, Mozilla, dll.), halaman web tersebut merupakan kombinasi dari tiga teknologi,

HTML (HyperText Markup Language): HTML mendefinisikan konten halaman web. Ini adalah bahasa markup standar untuk menambahkan konten ke situs web. Sebagai contoh, jika Anda ingin menambahkan teks, gambar, atau hal lain ke situs web Anda, HTML membantu Anda melakukannya.

CSS (Cascading Style Sheets): Digunakan untuk menata halaman web. CSS menangani semua desain visual yang Anda lihat di situs web tertentu.

JavaScript: JavaScript adalah otak dari sebuah halaman web. JavaScript menangani semua penanganan logika dan fungsionalitas halaman web. Oleh karena itu, JavaScript memungkinkan untuk membuat konten dan gaya menjadi interaktif.

Ketiga bahasa pemrograman ini memungkinkan kita untuk membuat dan memanipulasi aspek-aspek halaman web.

Saya kira Anda sudah mengetahui dasar-dasar halaman web dan HTML untuk artikel ini. Beberapa konsep HTML seperti div, tag, judul, dan lain-lain, mungkin akan sangat berguna saat membuat scraper web ini. Anda tidak perlu mengetahui semuanya tetapi hanya dasar-dasar desain halaman web dan bagaimana informasi yang terkandung di dalamnya, dan kita siap untuk memulai.

Artikel berita Scraping Web Menggunakan BeautifulSoup di Python

Python memiliki beberapa paket yang memungkinkan kita untuk mengikis informasi dari halaman web. Kita akan melanjutkan dengan BeautifulSoup karena ini adalah salah satu pustaka Python yang paling terkenal dan mudah digunakan untuk web scraping.

BeautifulSoup adalah yang terbaik untuk mengurai konten HTML URL dan mengaksesnya dengan tag dan label. Oleh karena itu, akan lebih mudah untuk mengekstrak bagian teks tertentu dari situs web.

Hanya dengan 3-5 baris kode, kita dapat melakukan keajaiban dan mengekstrak semua jenis teks situs web pilihan kita dari internet, yang menjelaskan bahwa ini adalah paket yang mudah digunakan namun kuat.

Kita mulai dari yang paling dasar. Untuk menginstal paket pustaka, ketik perintah berikut ke dalam distribusi Python Anda,

! pip install beautifulsoup4

Kita juga akan menggunakan 'modul permintaan' karena modul ini menyediakan kode HTML dari halaman manapun kepada BeautifulSoup. Untuk menginstalnya, ketik perintah berikut pada distribusi Python Anda,

! permintaan pemasangan pip

Modul permintaan ini akan memungkinkan kita untuk mendapatkan kode HTML dari halaman web dan menavigasinya menggunakan paket BeautfulSoup. Dua perintah yang akan membuat pekerjaan kita jauh lebih mudah adalah

find_all(tag elemen, atribut): Fungsi ini mengambil tag dan atribut sebagai parameternya dan memungkinkan kita untuk menemukan elemen HTML apa pun dari halaman web. Fungsi ini akan mengidentifikasi semua elemen dengan tipe yang sama. Kita bisa menggunakan find() untuk mendapatkan elemen pertama saja.

get_text(): Setelah kita menemukan elemen tertentu, perintah ini memungkinkan kita mengekstrak teks di dalamnya.

Untuk menavigasi kode HTML halaman web kita dan menemukan elemen yang ingin kita kikis, kita dapat menggunakan opsi 'inspect element' dengan mengklik kanan pada halaman tersebut atau cukup dengan menekan Ctrl+F. Ini akan memungkinkan Anda untuk melihat kode sumber halaman web.

Setelah kita menemukan elemen-elemen yang diinginkan, kita akan mendapatkan kode HTML dengan modul request, dan untuk mengekstrak elemen-elemen tersebut, kita akan menggunakan modul BeautifulSoup.

Untuk artikel ini, kami akan melakukan dengan surat kabar berbahasa Inggris EL Paris. Kami akan mengikis judul artikel berita dari halaman depan dan kemudian teksnya.

Jika kita memeriksa kode HTML dari artikel berita, kita akan melihat bahwa artikel di halaman depan memiliki struktur seperti ini,

The title has <h2> element with itemprop=”headline” and class=”articulo-titulo” attributes. It has an href attribute containing the text. So we will now extract the text using the following commands:

permintaan impor 
from bs4 import BeautifulSoup

Setelah kita mendapatkan konten HTML menggunakan modul permintaan, kita dapat menyimpannya ke dalam variabel halaman sampul:

# Permintaan
r1 = requests.get(url)
r1.status_code
 
# Kita akan menyimpan konten halaman sampul di halaman sampul
halaman sampul = r1.content

Selanjutnya, kita akan mendefinisikan variabel sup,

# Pembuatan sup
sup1 = BeautifulSoup(halaman sampul, 'html5lib')

Pada baris kode berikut ini, kita akan menemukan elemen yang kita cari,

# Identifikasi berita
halaman_berita = soup1.find_all('h2', class_='articulo-titulo')

Dengan menggunakan final_all, kita mendapatkan semua kejadian. Oleh karena itu, fungsi ini harus mengembalikan sebuah daftar di mana setiap itemnya adalah sebuah artikel berita,

Untuk dapat mengekstrak teks, kita akan menggunakan perintah berikut:

halaman_berita[4].get_text()

Jika kita ingin mengakses nilai dari sebuah atribut (dalam kasus kita, link), kita dapat menggunakan perintah berikut,

halaman_berita[4]['href']

Ini akan memungkinkan kita untuk mendapatkan tautan dalam bentuk teks biasa.

Jika Anda sudah memahami semua konsep hingga saat ini, Anda bisa melakukan web scraping pada konten apa pun yang Anda pilih.

Langkah selanjutnya adalah mengakses setiap konten artikel berita dengan atribut href, mendapatkan kode sumber untuk menemukan paragraf dalam kode HTML, dan akhirnya mendapatkannya dengan BeautifulSoup. Prosesnya sama seperti yang kami jelaskan di atas, namun kita perlu mendefinisikan tag dan atribut yang mengidentifikasi konten artikel berita.

Kode untuk fungsionalitas penuh diberikan di bawah ini. Saya tidak akan menjelaskan setiap baris secara terpisah karena kode tersebut dikomentari; Anda dapat memahaminya dengan jelas dengan membaca komentar tersebut.

jumlah_artikel = 5

# Daftar kosong untuk konten, tautan, dan judul
konten_berita = []
daftar_tautan = []
daftar_judul = []
 
for n in np.arange(0, jumlah_artikel):
    
   # hanya artikel berita (ada juga album dan hal-hal lain)
   if "inenglish" tidak ada di halaman_berita[n].find('a')['href']:  
       lanjutkan
    
   # Mendapatkan tautan dari sebuah artikel
   link = coverpage_berita[n].find('a')['href']
    list_links.append(link)
    
   # Mendapatkan judul
    judul = halaman_berita[n].find('a').get_text()
    daftar_judul.append(judul)
    
   # Membaca konten (dibagi dalam beberapa paragraf)
    artikel = requests.get(link)
    artikel_konten = artikel.content
    sup_artikel = BeautifulSoup(artikel_konten, 'html5lib')
    body = sup_artikel.find_all('div', class_='articulo-cuerpo')
    x = body[0].find_all('p')
    
   # Menyatukan paragraf-paragraf
    daftar_paragraf = []
   for p in np.arange(0, len(x)):
        paragraf = x[p].get_text()
        daftar_paragraf.append(paragraf)
        artikel_akhir = " ".join(list_paragraf)
        
    isi_berita.append(artikel_akhir)

Mari kita masukkan artikel yang telah diekstrak ke dalam artikel berikut ini:

  • Dataset yang akan memasukkan model (df_features).
  • Dataset dengan judul dan tautan (df_show_info).

# df_features
df_features = pd.DataFrame(
     {'Article Content': news_contents 
    })
 
# df_show_info
df_show_info = pd.DataFrame(
    {'Article Title': list_titles,
     'Article Link': list_links})
df_features

df_show_info

Untuk mendefinisikan pengalaman pengguna yang lebih baik, kita juga akan mengukur waktu yang dibutuhkan skrip untuk mendapatkan berita. Kita akan mendefinisikan sebuah fungsi untuk hal ini dan kemudian memanggilnya. Sekali lagi, saya tidak akan menjelaskan setiap baris kode karena kode tersebut dikomentari. Untuk mendapatkan pemahaman yang jelas, Anda dapat membaca komentar-komentar tersebut.

def get_news_elpais():
    
    # url definition
    url = "https://elpais.com/elpais/inenglish.html"
    
    # Request
    r1 = requests.get(url)
    r1.status_code
 
    # We'll save in coverpage the cover page content
    coverpage = r1.content
 
    # Soup creation
    soup1 = BeautifulSoup(coverpage, 'html5lib')
 
    # News identification
    coverpage_news = soup1.find_all('h2', class_='articulo-titulo')
    len(coverpage_news)
    
    number_of_articles = 5
 
    # Empty lists for content, links and titles
    news_contents = []
    list_links = []
    list_titles = []
 
    for n in np.arange(0, number_of_articles):
 
        # only news articles (there are also albums and other things)
        if "inenglish" not in coverpage_news[n].find('a')['href']:  
            continue
 
        # Getting the link of the article
        link = coverpage_news[n].find('a')['href']
        list_links.append(link)
 
        # Getting the title
        title = coverpage_news[n].find('a').get_text()
        list_titles.append(title)
 
        # Reading the content (it is divided in paragraphs)
        article = requests.get(link)
        article_content = article.content
        soup_article = BeautifulSoup(article_content, 'html5lib')
        body = soup_article.find_all('div', class_='articulo-cuerpo')
        x = body[0].find_all('p')
 
        # Unifying the paragraphs
        list_paragraphs = []
        for p in np.arange(0, len(x)):
            paragraph = x[p].get_text()
            list_paragraphs.append(paragraph)
            final_article = " ".join(list_paragraphs)
 
        news_contents.append(final_article)
 
    # df_features
    df_features = pd.DataFrame(
         {'Content': news_contents 
        })
 
    # df_show_info
    df_show_info = pd.DataFrame(
        {'Article Title': list_titles,
         'Article Link': list_links,
         'Newspaper': 'El Pais English'})
    
    return (df_features, df_show_info)

Proxy Apa yang Terbaik untuk Scraping Web untuk Artikel Berita Menggunakan Python?

ProxyScrape adalah salah satu penyedia proxy paling populer dan dapat diandalkan secara online. Tiga layanan proxy termasuk server proxy pusat data khusus, server proxy perumahan, dan server proxy premium. Jadi, apa solusi terbaik untuk proxy HTTP terbaik untuk web scraping artikel berita menggunakan python? Sebelum menjawab pertanyaan itu, yang terbaik adalah melihat fitur dari masing-masing server proxy.

Proxy pusat data khusus paling cocok untuk tugas-tugas online berkecepatan tinggi, seperti streaming data dalam jumlah besar (dalam hal ukuran) dari berbagai server untuk tujuan analisis. Ini adalah salah satu alasan utama organisasi memilih proksi khusus untuk mentransmisikan data dalam jumlah besar dalam waktu singkat.

Proksi pusat data khusus memiliki beberapa fitur, seperti bandwidth tak terbatas dan koneksi bersamaan, proksi HTTP khusus untuk komunikasi yang mudah, dan otentikasi IP untuk keamanan lebih. Dengan waktu aktif 99,9%, Anda bisa yakin bahwa pusat data khusus akan selalu berfungsi selama sesi apa pun. Yang tak kalah penting, ProxyScrape menyediakan layanan pelanggan yang sangat baik dan akan membantu Anda menyelesaikan masalah Anda dalam waktu 24-48 jam kerja. 

Berikutnya adalah proxy perumahan. Residential adalah proxy yang cocok untuk setiap konsumen umum. Alasan utamanya adalah alamat IP proxy perumahan menyerupai alamat IP yang disediakan oleh ISP. Ini berarti mendapatkan izin dari server target untuk mengakses datanya akan lebih mudah dari biasanya. 

Fitur lain dari proksi residensial ProxyScrapeadalah fitur berputar. Proksi berputar membantu Anda menghindari pelarangan permanen pada akun Anda karena proksi residensial Anda secara dinamis mengubah alamat IP Anda, sehingga menyulitkan server target untuk memeriksa apakah Anda menggunakan proksi atau tidak. 

Selain itu, fitur-fitur lain dari proxy residensial adalah: lebar pita tak terbatas, bersama dengan koneksi bersamaan, proxy HTTP/s khusus, proxy pada sesi kapan saja karena 7 juta lebih proxy dalam kumpulan proxy, otentikasi nama pengguna dan kata sandi untuk keamanan yang lebih baik, dan yang tak kalah pentingnya, kemampuan untuk mengubah server negara. Anda dapat memilih server yang Anda inginkan dengan menambahkan kode negara pada autentikasi nama pengguna. 

Yang terakhir adalah proxy premium. Proksi premium sama dengan proksi pusat data khusus. Fungsionalitasnya tetap sama. Perbedaan utamanya adalah aksesibilitas. Pada proxy premium, daftar proxy (daftar yang berisi proxy) tersedia untuk setiap pengguna di jaringan ProxyScrape. Itulah mengapa proxy premium lebih murah daripada proxy pusat data khusus.

Jadi, apa solusi terbaik untuk proxy HTTP terbaik untuk web scraping artikel berita menggunakan python? Jawabannya adalah "proxy perumahan." Alasannya sederhana. Seperti yang dikatakan di atas, proxy perumahan adalah proxy yang berputar, yang berarti bahwa alamat IP Anda akan berubah secara dinamis selama periode waktu tertentu yang dapat membantu mengelabui server dengan mengirimkan banyak permintaan dalam jangka waktu yang singkat tanpa mendapatkan blokir IP. 

Selanjutnya, yang terbaik adalah mengubah server proxy berdasarkan negara. Anda hanya perlu menambahkan ISO_CODE negara di akhir autentikasi IP atau autentikasi nama pengguna dan kata sandi. 

Bacaan yang Disarankan:

  1. Mengikis Komentar YouTube - 5 Langkah Sederhana
  2. 8 Alat Scraping Web Python Terbaik di Tahun 2023

Pertanyaan yang Sering Diajukan:

1. Apa cara terbaik untuk mengupas artikel berita menggunakan python?
Perpustakaan python ini disebut "BeautifulSoup" dan dapat secara otomatis mengikis data dari artikel berita apa pun. Satu-satunya persyaratan adalah pengetahuan dasar tentang HTML untuk menemukan tag HTML dari kode sumber halaman yang berisi data yang perlu dikikis.
2. Apakah boleh mengambil artikel berita dari situs web?
Jawabannya adalah tergantung pada syarat dan ketentuan situs web. Tetapi sebagian besar artikel berita dapat di-scraping karena semua informasi sengaja disediakan untuk publik. Semua data publik dapat di-scraping selama metode scraping yang Anda lakukan tidak membahayakan data atau pemilik situs web.
3. Bagaimana cara mengikis Google News menggunakan Python?
Anda dapat mengikis Google News atau artikel berita apa pun menggunakan python dengan bantuan pustaka python yang disebut "BeautifulSoup". Instal perpustakaan dan proxy perumahan yang andal untuk mencegah pemblokiran IP dari server target.

Membungkus

Pada artikel ini, kita telah melihat dasar-dasar web scraping dengan memahami dasar-dasar desain dan struktur aliran halaman web. Kami juga telah melakukan pengalaman langsung dengan mengekstrak data dari artikel berita. Web scraping dapat memberikan keajaiban jika dilakukan dengan benar. Sebagai contoh, model yang dioptimalkan sepenuhnya dapat dibuat berdasarkan data yang diekstrak yang dapat memprediksi kategori dan menampilkan ringkasan kepada pengguna. Hal yang paling penting untuk dilakukan adalah mengetahui kebutuhan Anda dan memahami struktur halaman. Python memiliki beberapa pustaka yang sangat kuat namun mudah digunakan untuk mengekstrak data pilihan Anda. Hal ini membuat web scraping menjadi sangat mudah dan menyenangkan.  

Penting untuk dicatat bahwa kode ini berguna untuk mengekstrak data dari halaman web tertentu. Jika kita ingin melakukannya dari halaman lain, kita perlu mengoptimalkan kode kita sesuai dengan struktur halaman tersebut. Namun, begitu kita tahu cara mengidentifikasinya, prosesnya akan sama saja.

Artikel ini berharap dapat menjelaskan secara mendalam pendekatan praktis web scraping untuk artikel berita menggunakan python. Satu hal yang perlu diingat adalah bahwa proxy adalah kebutuhan mutlak untuk web scraping. Proksi membantu untuk mencegah pemblokiran IP dari server target. ProxyScrape menyediakan proxy perumahan yang bagus dan dapat diandalkan untuk scraping web Anda untuk artikel berita menggunakan proyek python.