Berita-silakan adalah source open source, crawler berita yang mudah digunakan yang mengekstrak informasi terstruktur dari hampir semua situs web berita. Ini dapat secara rekursif mengikuti hyperlink internal dan membaca feed RSS untuk mengambil artikel yang paling baru dan juga lama diarsipkan. Anda hanya perlu memberikan URL root dari situs web berita untuk merangkak sepenuhnya. Berita-silakan menggabungkan kekuatan beberapa perpustakaan dan alat canggih, seperti gesekan, koran, dan keterbacaan.
Berita-silakan fitur mode perpustakaan, yang memungkinkan pengembang Python untuk menggunakan fungsi merangkak dan ekstraksi dalam program mereka sendiri. Selain itu, berita-berita memungkinkan untuk merayap dan mengekstrak artikel dari arsip berita besar (sangat) di CommonCrawl.org.
Jika Anda ingin berkontribusi pada berita-berita, silakan baca terlebih dahulu di sini.
03/23/2021: Jika Anda tertarik dengan klasifikasi sentimen dalam artikel berita, lihat dataset skala besar kami untuk klasifikasi sentimen yang bergantung pada target. Kami juga menerbitkan model saraf yang mudah digunakan yang mencapai kinerja canggih. Kunjungi proyek di sini.
06/01/2018: Jika Anda tertarik pada ekstraksi acara dari berita, Anda mungkin juga ingin memeriksa proyek baru kami, Giveme5w1h - sebuah alat yang mengekstraksi frasa yang menjawab jurnalistik lima W dan satu pertanyaan untuk menggambarkan acara utama artikel, yaitu, siapa, kapan, di mana, mengapa, dan bagaimana.
Berita-berita mengekstrak atribut berikut dari artikel berita. File JSON examplary yang diekstraksi oleh berita-berita dapat ditemukan di sini.
Berita-silakan mendukung tiga kasus penggunaan utama, yang dijelaskan secara lebih rinci secara berikut.
python3 -m newsplease.examples.commoncrawl Sangat mudah, kami berjanji!
Berita-silakan berjalan di Python 3.8+.
$ pip install news-pleaseAnda dapat mengakses fungsionalitas inti dari berita-berita, yaitu ekstraksi informasi semi-terstruktur dari satu atau lebih artikel berita, dalam kode Anda sendiri dengan menggunakan berita-berita dalam mode perpustakaan. Jika Anda ingin menggunakan ekstraksi situs web penuh berita-silakan (hanya diberikan URL root) atau mode perayapan kontinu (menggunakan RSS), Anda harus menggunakan mode CLI, yang dijelaskan nanti.
from newsplease import NewsPlease
article = NewsPlease . from_url ( 'https://www.nytimes.com/2017/02/23/us/politics/cpac-stephen-bannon-reince-priebus.html?hp' )
print ( article . title )Sampel artikel yang diekstraksi dapat ditemukan di sini (sebagai file JSON).
Jika Anda ingin merangkak beberapa artikel sekaligus, secara opsional dengan parameter opsional apa pun yang diambil oleh permintaan.Request ()
NewsPlease . from_urls ([ url1 , url2 , ...], request_args = { "timeout" : 6 })atau jika Anda memiliki file yang berisi semua URL (setiap baris yang berisi URL tunggal)
NewsPlease . from_file ( path )Atau jika Anda memiliki data HTML mentah (Anda juga dapat menyediakan URL asli untuk meningkatkan keakuratan mengekstraksi tanggal penerbitan)
NewsPlease . from_html ( html , url = None )Atau jika Anda memiliki file warc (juga periksa alur kerja CommonCrawl kami, yang menyediakan metode yang nyaman untuk memfilter arsip CommonCrawl untuk outlet dan tanggal berita tertentu)
NewsPlease . from_warc ( warc_record )Dalam mode perpustakaan, berita-berita akan mencoba mengunduh dan mengekstrak informasi dari setiap URL. Fungsi yang dijelaskan sebelumnya memblokir, yaitu, akan kembali begitu berita-berita telah mencoba semua URL. Daftar yang dihasilkan berisi semua artikel yang berhasil diekstraksi.
Akhirnya, Anda dapat memproses informasi yang diekstraksi yang terkandung dalam objek artikel. Misalnya, untuk mengekspor ke format JSON, Anda dapat menggunakan:
import json
with open ( "article.json" , "w" ) as file :
json . dump ( article . get_serializable_dict (), file )$ news-please Berita-silakan mulai merangkak beberapa contoh halaman. Untuk mengakhiri proses, tekan CTRL+C . Berita-silakan ditutup dalam 5-60 detik. Anda juga dapat menekan CTRL+C dua kali, yang akan segera membunuh proses (tidak disarankan, meskipun).
Hasilnya disimpan secara default dalam file JSON di folder data . Dalam konfigurasi default, berita-berita juga menyimpan file HTML asli.
Kemungkinan besar, Anda tidak akan ingin merangkak dari situs web yang disediakan dalam konfigurasi contoh kami. Cukup buka file sitelist.hjson dan tambahkan URL root dari halaman web outlet berita pilihan Anda. Berita-silakan juga dapat mengekstraksi peristiwa terbaru dari proyek GDELT, lihat di sini.
Berita-silakan mendukung ekspor ke Elasticsearch. Menggunakan Elasticsearch juga akan mengaktifkan fitur versi. Pertama, aktifkan di config.cfg di direktori config, yang secara default ~/news-please/config tetapi juga dapat diubah dengan parameter -c ke lokasi khusus. Jika direktori tidak ada, direktori default akan dibuat di lokasi yang ditentukan.
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.ElasticsearchStorage' :350
} Itu saja! Kecuali, jika database Elasticsearch Anda tidak terletak di http://localhost:9200 , menggunakan nama pengguna/kata sandi yang berbeda atau otentikasi sertifikat CA. Dalam kasus ini, Anda juga perlu mengubah yang berikut.
[Elasticsearch]
host = localhost
port = 9200
...
# Credentials used for authentication (supports CA-certificates):
use_ca_certificates = False # True if authentification needs to be performed
ca_cert_path = '/path/to/cacert.pem'
client_cert_path = '/path/to/client_cert.pem'
client_key_path = '/path/to/client_key.pem'
username = 'root'
secret = 'password' Berita-silakan memungkinkan untuk menyimpan artikel ke database PostgreSQL, termasuk fitur versi. Untuk mengekspor ke postgresql, buka file konfigurasi yang sesuai ( config_lib.cfg untuk mode perpustakaan dan config.cfg untuk mode CLI) dan tambahkan modul PostgreSQLStorage ke pipa dan menyesuaikan kredensial basis data:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.PostgresqlStorage' :350
}
[Postgresql]
# Postgresql-Connection required for saving meta-informations
host = localhost
port = 5432
database = 'news-please'
# schema = 'news-please'
user = 'user'
password = 'password' Jika Anda berencana untuk menggunakan berita-silakan dan ekspornya ke PostgreSQL di lingkungan produksi, kami sarankan untuk menghapus paket psycopg2-binary dan instal psycopg2 . Kami menggunakan yang pertama karena tidak memerlukan kompiler C untuk dipasang. Lihat di sini, untuk informasi lebih lanjut tentang perbedaan antara psycopg2 dan psycopg2-binary dan cara mengatur lingkungan produksi.
Berita-tolong memungkinkan untuk menyimpan artikel pada database Redis, termasuk fitur versi. Untuk mengekspor ke redis, buka file konfigurasi yang sesuai ( config_lib.cfg untuk mode perpustakaan dan config.cfg untuk mode CLI) dan tambahkan modul RedisStorage ke pipa dan sesuaikan kredensial koneksi:
[Scrapy]
ITEM_PIPELINES = {
'newsplease.pipeline.pipelines.ArticleMasterExtractor' :100 ,
'newsplease.pipeline.pipelines.RedisStorage' :350
}
[Redis]
host = localhost
port = 6379
db = 0
# You can add any redis connection parameter here
ssl_check_hostname = True
username = "news-please"
max_connections = 24Pipa ini juga harus kompatibel dengan AWS Elasticache dan GCP Memorystore
Kami telah mengumpulkan banyak informasi yang berguna untuk pengguna dan pengembang. Sebagai pengguna, kemungkinan besar Anda hanya akan berurusan dengan dua file: sitelist.hjson (untuk mendefinisikan situs yang akan dirangkak) dan config.cfg (mungkin jarang, jika Anda ingin mengubah konfigurasi).
Anda dapat menemukan informasi lebih lanjut tentang penggunaan dan pengembangan di wiki kami! Sebelum menghubungi kami, silakan lihat wiki. Jika Anda masih memiliki pertanyaan tentang cara menggunakan berita-silakan buat pertanyaan baru dalam diskusi di sini di GitHub. Harap dipahami bahwa kami tidak dapat memberikan dukungan individu melalui email. Kami berpikir bahwa bantuan lebih berharga jika dibagikan secara publik sehingga lebih banyak orang dapat memperoleh manfaat darinya. Namun, jika Anda masih memerlukan dukungan individu, misalnya, karena kerahasiaan proyek Anda, kami mungkin dapat memberi Anda konsultasi pribadi. Hubungi kami untuk informasi tentang harga dan perincian lebih lanjut.
Untuk laporan bug, kami meminta Anda untuk menggunakan template laporan bug. Pastikan Anda menggunakan versi terbaru dari berita-berita, karena kami tidak dapat memberikan dukungan untuk versi yang lebih lama. Seperti yang dijelaskan sebelumnya, kami tidak dapat memberikan dukungan untuk masalah atau pertanyaan yang dikirim melalui email.
Sumbangan Anda sangat dihargai! Mereka akan membebaskan kami untuk mengerjakan proyek ini lebih banyak, untuk mengambil tugas-tugas seperti menambahkan fitur baru, dukungan perbaikan bug, dan menangani kekhawatiran lebih lanjut dengan perpustakaan.
Proyek ini tidak akan mungkin terjadi tanpa kontribusi siswa berikut (dipesan secara abjad):
Kami juga berterima kasih kepada semua kontributor lain, yang dapat Anda temukan di halaman kontributor!
Jika Anda menggunakan berita-tolong, silakan kutip makalah kami (ResearchGate, Mendeley):
@InProceedings{Hamborg2017,
author = {Hamborg, Felix and Meuschke, Norman and Breitinger, Corinna and Gipp, Bela},
title = {news-please: A Generic News Crawler and Extractor},
year = {2017},
booktitle = {Proceedings of the 15th International Symposium of Information Science},
location = {Berlin},
doi = {10.5281/zenodo.4120316},
pages = {218--223},
month = {March}
}
Anda dapat menemukan informasi lebih lanjut tentang ini dan proyek berita lainnya di situs web kami.
Apakah Anda ingin berkontribusi? Hebat, kami selalu senang atas dukungan apa pun di proyek ini! Kami terutama mencari permintaan tarik yang memperbaiki bug. Kami juga menyambut permintaan tarik yang menyumbangkan ide Anda sendiri.
Dengan berkontribusi pada proyek ini, Anda setuju bahwa kontribusi Anda akan dilisensikan di bawah lisensi proyek.
Kami menyukai kontribusi oleh pengguna kami! Jika Anda berencana untuk mengirimkan permintaan tarik, silakan buka masalah terlebih dahulu dan desribe masalah yang ingin Anda perbaiki atau apa yang ingin Anda tingkatkan dan bagaimana! Dengan cara ini, kami dapat membahas apakah ide Anda dapat ditambahkan ke berita-berita di tempat pertama dan, jika demikian, bagaimana hal itu bisa diimplementasikan untuk masuk ke dalam arsitektur dan gaya pengkodean. Dalam masalah ini, harap nyatakan bahwa Anda berencana untuk mengimplementasikan fitur yang dijelaskan.
Sayangnya, kami tidak memiliki sumber daya untuk mengimplementasikan fitur yang diminta oleh pengguna. Sebagai gantinya, kami menyarankan Anda menerapkan fitur yang Anda butuhkan dan jika Anda ingin membuka permintaan tarik di sini sehingga komunitas juga dapat memperoleh manfaat dari perbaikan Anda.
Berlisensi di bawah lisensi Apache, versi 2.0 ("lisensi"); Anda tidak boleh menggunakan berita-berita kecuali sesuai dengan lisensi. Salinan lisensi termasuk dalam proyek, lihat file lisensi.txt.
Kecuali diharuskan oleh hukum yang berlaku atau disepakati secara tertulis, perangkat lunak yang didistribusikan di bawah lisensi didistribusikan berdasarkan "sebagaimana adanya", tanpa jaminan atau ketentuan dalam bentuk apa pun, baik tersurat maupun tersirat. Lihat lisensi untuk bahasa spesifik yang mengatur izin dan batasan di bawah lisensi. Logo Berita-Berita adalah milik Mario Hamborg.
Hak Cipta 2016-2024 Tim Berita-Berita