comcrawl adalah paket python untuk menanyakan dan mengunduh halaman dengan mudah dari commoncrawl.org.
Saya terinspirasi untuk melakukan comcrawl dengan membaca artikel ini.
Catatan: Saya membuat ini untuk proyek pribadi dan untuk bersenang-senang. Oleh karena itu paket ini dimaksudkan untuk digunakan dalam proyek kecil hingga menengah, karena tidak dioptimalkan untuk menangani data berukuran gigabyte atau terrabyte. Anda mungkin ingin memeriksa cdx-toolkit atau cdx-index-client dalam kasus seperti itu.
Proyek Common Crawl adalah "repositori terbuka data perayapan web yang dapat diakses dan dianalisis oleh siapa saja" . Ini berisi miliaran halaman web dan sering digunakan untuk proyek NLP untuk mengumpulkan data teks dalam jumlah besar.
Perayapan Umum menyediakan indeks pencarian, yang dapat Anda gunakan untuk mencari URL tertentu dalam data perayapannya. Setiap hasil pencarian berisi tautan dan offset byte ke lokasi tertentu di bucket AWS S3 untuk mengunduh halaman.
comcrawl menyederhanakan proses pencarian dan pengunduhan dari Common Crawl dengan menawarkan antarmuka API sederhana yang dapat Anda gunakan dalam program python Anda.
comcrawl tersedia di PyPI.
Instal melalui pip dengan menjalankan perintah berikut dari terminal Anda:
pip install comcrawl
HTML untuk setiap halaman akan tersedia sebagai string di kunci 'html' di setiap kamus hasil setelah memanggil metode download
.
from comcrawl import IndexClient
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
first_page_html = client . results [ 0 ][ "html" ]
Anda dapat memanfaatkan multithreading saat mencari atau mengunduh dengan menentukan jumlah thread yang ingin Anda gunakan.
Harap diingat untuk tidak melakukan hal ini secara berlebihan, sehingga Anda tidak terlalu membebani server Perayapan Umum (lihat Kode Etik).
from comcrawl import IndexClient
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" , threads = 4 )
client . download ( threads = 4 )
Anda dapat dengan mudah menggabungkan paket ini dengan perpustakaan pandas, untuk memfilter hasil duplikat dan menyimpannya ke disk:
from comcrawl import IndexClient
import pandas as pd
client = IndexClient ()
client . search ( "reddit.com/r/MachineLearning/*" )
client . results = ( pd . DataFrame ( client . results )
. sort_values ( by = "timestamp" )
. drop_duplicates ( "urlkey" , keep = "last" )
. to_dict ( "records" ))
client . download ()
pd . DataFrame ( client . results ). to_csv ( "results.csv" )
Kunci url saja mungkin tidak cukup di sini, jadi Anda mungkin ingin menulis fungsi untuk menghitung id khusus dari properti hasil untuk menghilangkan duplikat.
Secara default, saat dipakai, IndexClient
mengambil daftar indeks Perayapan Umum yang tersedia saat ini untuk dicari. Anda juga dapat membatasi pencarian pada Indeks Perayapan Umum tertentu, dengan menentukannya sebagai daftar.
from comcrawl import IndexClient
client = IndexClient ([ "2019-51" , "2019-47" ])
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
Saat men-debug kode Anda, Anda dapat mengaktifkan pencatatan semua permintaan HTTP yang dibuat.
from comcrawl import IndexClient
client = IndexClient ( verbose = True )
client . search ( "reddit.com/r/MachineLearning/*" )
client . download ()
Saat mengakses Perayapan Umum, harap berhati-hati dengan pedoman berikut yang diposting oleh salah satu pengelola Perayapan Umum:
https://groups.google.com/forum/#!msg/common-crawl/3QmQjFA_3y4/vTbhGqIBBQAJ