Scraping Google News Indonesia

Untuk mendapatkan artikel berita, yang paling mudah adalah mengambil kumpulan atau list yang sudah ada pada Google News. Untuk kasus ini, kita akan mengambil isi dari beberapa media online di Indonesia pada umumnya untuk memdapatkan Corpus Indonesian News

Berikut ini link untuk Google News Indonesia https://news.google.com/?authuser=0&ned=en_id

Requirement

Ada beberapa module yang akan kita gunakan untuk mengambil link artikel berita dari Google News, antara lain :

  • BeautifulSoup (bs4)

BeautifulSoup (bs4)

install bs4 menggunakan pip

$ pip install bs4
Collecting bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1

Scrap

Kode Program

Berikut kode program sederhana


In [1]:
from bs4 import BeautifulSoup
import requests
import time
import datetime

google_news = '''https://news.google.com/?authuser=0&ned=en_id'''

def scrape_news_summaries():
    news_summaries = []
    
    time.sleep(2) # setting sleep 2 detik
    r = requests.get(str(google_news))
    content = r.text

    soup = BeautifulSoup(content, "html.parser")
    st_divs = soup.find_all("a", {"class": "article",'href':True})
    for st_div in st_divs:
        news_summaries.append(st_div['href'])
    return news_summaries

In [2]:
%time links = scrape_news_summaries()


CPU times: user 452 ms, sys: 32.3 ms, total: 484 ms
Wall time: 21.6 s

In [3]:
from pprint import pprint

In [4]:
pprint(links[:10])


[u'https://news.detik.com/berita/d-3494805/kata-ahok-soal-balai-kota-yang-kini-dipenuhi-balon',
 u'https://news.detik.com/berita/d-3494805/kata-ahok-soal-balai-kota-yang-kini-dipenuhi-balon',
 u'http://megapolitan.kompas.com/read/2017/05/08/10124861/pendukungnya.kirim.balon.dan.kursi.roda.ini.tanggapan.ahok',
 u'http://www.cnnindonesia.com/nasional/20170508102040-20-213064/jelang-vonis-ahok-terima-dukungan-balon-merah-putih/',
 u'http://megapolitan.kompas.com/read/2017/05/08/08215251/pendukung.ahok.bawa.10.000.balon.ke.balai.kota',
 u'http://megapolitan.kompas.com/read/2017/05/08/08215251/pendukung.ahok.bawa.10.000.balon.ke.balai.kota',
 u'https://news.detik.com/berita/3494805/kata-ahok-soal-balai-kota-yang-kini-dipenuhi-balon',
 u'https://news.detik.com/berita/3494805/kata-ahok-soal-balai-kota-yang-kini-dipenuhi-balon',
 u'http://metro.news.viva.co.id/news/read/913022-jelang-vonis-balon-merah-putih-berdatangan-ke-kantor-ahok',
 u'http://metro.news.viva.co.id/news/read/913022-jelang-vonis-balon-merah-putih-berdatangan-ke-kantor-ahok']

Masih terdapat beberapa link yang redudant, maka kita harus menghilangkan menjadi unique


In [5]:
links_unique = list(set(links))

In [6]:
pprint(links_unique[:10])


[u'http://news.okezone.com/read/2017/05/08/337/1685712/hari-ini-presiden-jokowi-resmikan-fasilitas-pelabuhan-di-maluku-utara',
 u'http://www.tabloidbintang.com/articles/berita/Peristiwa/67006-saat-pohonpohon-berpuisi-dan-berpantun-untuk-ahokdjarot',
 u'http://teknologi.metrotvnews.com/news-teknologi/4KZEE7Wk-asus-bikin-ponsel-anyar-ini-bocoran-sementara-spesifikasinya',
 u'https://news.detik.com/berita/d-3494757/282-perwira-polri-dirotasi-posisi-direskrimum-polda-jabar-diganti',
 u'http://news.metrotvnews.com/daerah/ZkePP6Zb-sambut-jokowi-masyarakat-patani-berlatih-menyanyikan-lagu-indonesia-raya',
 u'http://www.bbc.com/indonesia/dunia-39841103',
 u'https://www.voaindonesia.com/a/spacex-akan-luncurkan-satelit-penyedia-jasa-sambungan-internet/3841122.html',
 u'https://m.tempo.co/read/news/2017/05/08/214873208/ahok-akan-divonis-ribuan-balon-penuhi-balai-kota',
 u'https://news.detik.com/bbc-world/d-3494894/bagaimana-macron-hanya-butuh-1-tahun-untuk-jadi-presiden-prancis',
 u'http://banjarmasin.tribunnews.com/2017/05/08/balai-kota-jakarta-diserbu-ribuan-balon-merah-putih-ini-tujuan-penyumbangnya']

Menyimpan Hasil


In [7]:
f = open('list_links_google_news_indonesia.txt','w')

In [8]:
f.write(str(links_unique))
f.close()

Sekarang kita sudah mendapatkan unique links dari Google News Indonesia.

Semoga bermanfaat