Cara Membangun Perayap Web Dasar untuk Menarik Informasi Dari Situs Web

Cara Membangun Perayap Web Dasar untuk Menarik Informasi Dari Situs Web

Program yang membaca informasi dari situs web, atau perayap web, memiliki semua jenis aplikasi yang berguna. Anda dapat mengorek informasi saham, skor olahraga, teks dari akun Twitter, atau menarik harga dari situs belanja.





Menulis program perayapan web ini lebih mudah dari yang Anda kira. Python memiliki perpustakaan yang bagus untuk menulis skrip yang mengekstrak informasi dari situs web. Mari kita lihat cara membuat web crawler menggunakan Scrapy.





Menginstal Scrapy

kasar adalah pustaka Python yang dibuat untuk mengikis web dan membangun perayap web. Ini cepat, sederhana, dan dapat menavigasi beberapa halaman web tanpa banyak usaha.





Scrapy tersedia melalui perpustakaan Pip Installs Python (PIP), berikut adalah penyegaran di cara menginstal PIP di Windows, Mac, dan Linux .

Menggunakan Lingkungan Virtual Python lebih disukai karena memungkinkan Anda untuk menginstal Scrapy di direktori virtual yang membiarkan file sistem Anda sendiri. Dokumentasi Scrapy merekomendasikan melakukan ini untuk mendapatkan hasil terbaik.



Buat direktori dan inisialisasi lingkungan virtual.

tempat terbaik untuk membeli mac bekas
mkdir crawler
cd crawler
virtualenv venv
. venv/bin/activate

Anda sekarang dapat menginstal Scrapy ke direktori itu menggunakan perintah PIP.





pip install scrapy

Pemeriksaan cepat untuk memastikan Scrapy terpasang dengan benar

scrapy
# prints
Scrapy 1.4.0 - no active project
Usage:
scrapy [options] [args]
Available commands:
bench Run quick benchmark test
fetch Fetch a URL using the Scrapy downloader
genspider Generate new spider using pre-defined templates
runspider Run a self-contained spider (without creating a project)
...

Cara Membuat Perayap Web

Sekarang lingkungan sudah siap, Anda dapat mulai membangun perayap web. Mari mengikis beberapa informasi dari halaman Wikipedia tentang baterai: https://en.wikipedia.org/wiki/Battery_(listrik) .





Langkah pertama untuk menulis crawler adalah mendefinisikan kelas Python yang memanjang dari Scrapy.Spider . Ini memberi Anda akses ke semua fungsi dan fitur di Scrapy. Mari kita panggil kelas ini laba-laba1 .

Kelas laba-laba membutuhkan beberapa informasi:

  • ke nama untuk mengidentifikasi laba-laba
  • ke start_url variabel yang berisi daftar URL untuk dirayapi (URL Wikipedia akan menjadi contoh dalam tutorial ini)
  • ke mengurai() metode yang digunakan untuk memproses halaman web untuk mengekstrak informasi
import scrapy
class spider1(scrapy.Spider):
name = 'Wikipedia'
start_urls = ['https://en.wikipedia.org/wiki/Battery_(electricity)']
def parse(self, response):
pass

Tes cepat untuk memastikan semuanya berjalan dengan baik.

scrapy runspider spider1.py
# prints
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Scrapy 1.4.0 started (bot: scrapybot)
2017-11-23 09:09:21 [scrapy.utils.log] INFO: Overridden settings: {'SPIDER_LOADER_WARN_ONLY': True}
2017-11-23 09:09:21 [scrapy.middleware] INFO: Enabled extensions:
['scrapy.extensions.memusage.MemoryUsage',
'scrapy.extensions.logstats.LogStats',
...

Mematikan Pencatatan

Menjalankan Scrapy dengan kelas ini mencetak informasi log yang tidak akan membantu Anda saat ini. Mari kita sederhanakan dengan menghapus informasi log berlebih ini. Gunakan peringatan pernyataan dengan menambahkan kode ke awal file.

import logging
logging.getLogger('scrapy').setLevel(logging.WARNING)

Sekarang ketika Anda menjalankan skrip lagi, informasi log tidak akan dicetak.

Menggunakan Inspektur Chrome

Segala sesuatu di halaman web disimpan dalam elemen HTML. Elemen-elemen tersebut diatur dalam Document Object Model (DOM). Memahami DOM sangat penting untuk mendapatkan hasil maksimal dari perayap web Anda. Perayap web menelusuri semua elemen HTML pada halaman untuk menemukan informasi, jadi mengetahui bagaimana mereka diatur adalah penting.

Google Chrome memiliki alat yang membantu Anda menemukan elemen HTML lebih cepat. Anda dapat menemukan HTML untuk setiap elemen yang Anda lihat di halaman web menggunakan inspektur.

  • Navigasikan ke halaman di Chrome
  • Tempatkan mouse pada elemen yang ingin Anda lihat
  • Klik kanan dan pilih Memeriksa dari menu

Langkah-langkah ini akan membuka konsol pengembang dengan Elemen tab dipilih. Di bagian bawah konsol, Anda akan melihat pohon elemen. Pohon ini adalah bagaimana Anda akan mendapatkan informasi untuk skrip Anda.

Mengekstrak Judul

Mari buat skrip untuk melakukan beberapa pekerjaan untuk kita; Perayapan sederhana untuk mendapatkan teks judul halaman web.

Mulai skrip dengan menambahkan beberapa kode ke mengurai() metode yang mengekstrak judul.

...
def parse(self, response):
print response.css('h1#firstHeading::text').extract()
...

NS tanggapan argumen mendukung metode yang disebut CSS() yang memilih elemen dari halaman menggunakan lokasi yang Anda berikan.

Dalam contoh ini, elemennya adalah h1.firstHeading . Menambahkan

::text

ke skrip adalah apa yang memberi Anda konten teks elemen. Akhirnya, ekstrak() metode mengembalikan elemen yang dipilih.

Menjalankan skrip ini di Scrapy mencetak judul dalam bentuk teks.

[u'Battery (electricity)']

Menemukan Deskripsi

Sekarang setelah kita menggores teks judul, mari kita lakukan lebih banyak dengan skrip. Perayap akan menemukan paragraf pertama setelah judul dan mengekstrak informasi ini.

Inilah pohon elemen di Konsol Pengembang Chrome:

bagaimana memulihkan pesan yang dihapus dari facebook
div#mw-content-text>div>p

Panah kanan (>) menunjukkan hubungan induk-anak antara elemen.

Lokasi ini akan mengembalikan semua P elemen yang cocok, yang mencakup seluruh deskripsi. Untuk mendapatkan yang pertama P elemen Anda dapat menulis kode ini:

response.css('div#mw-content-text>div>p')[0]

Sama seperti judulnya, Anda menambahkan ekstraktor CSS

::text

untuk mendapatkan konten teks dari elemen.

response.css('div#mw-content-text>div>p')[0].css('::text')

Ekspresi terakhir menggunakan ekstrak() untuk mengembalikan daftar. Anda dapat menggunakan Python Ikuti() berfungsi untuk bergabung dengan daftar setelah semua perayapan selesai.

def parse(self, response):
print ''.join(response.css('div#mw-content-text>div>p')[0].css('::text').extract())

Hasilnya adalah paragraf pertama dari teks!

An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is
...

Mengumpulkan Data JSON

Scrapy dapat mengekstrak informasi dalam bentuk teks, yang berguna. Scrapy juga memungkinkan Anda melihat data JavaScript Object Notation (JSON). JSON adalah cara yang rapi untuk mengatur informasi dan banyak digunakan dalam pengembangan web. JSON bekerja cukup baik dengan Python demikian juga.

Saat Anda perlu mengumpulkan data sebagai JSON, Anda dapat menggunakan menghasilkan pernyataan yang dibangun ke dalam Scrapy.

Berikut adalah versi baru skrip yang menggunakan pernyataan hasil. Alih-alih mendapatkan elemen p pertama dalam format teks, ini akan mengambil semua elemen p dan mengaturnya dalam format JSON.

apa arti 100 disk di task manager
...
def parse(self, response):
for e in response.css('div#mw-content-text>div>p'):
yield { 'para' : ''.join(e.css('::text').extract()).strip() }
...

Anda sekarang dapat menjalankan spider dengan menentukan file JSON keluaran:

scrapy runspider spider3.py -o joe.json

Script sekarang akan mencetak semua elemen p.

[
{'para': 'An electric battery is a device consisting of one or more electrochemical cells with external connections provided to power electrical devices such as flashlights, smartphones, and electric cars.[1] When a battery is supplying electric power, its positive terminal is the cathode and its negative terminal is the anode.[2] The terminal marked negative is the source of electrons that when connected to an external circuit will flow and deliver energy to an external device. When a battery is connected to an external circuit, electrolytes are able to move as ions within, allowing the chemical reactions to be completed at the separate terminals and so deliver energy to the external circuit. It is the movement of those ions within the battery which allows current to flow out of the battery to perform work.[3] Historically the term 'battery' specifically referred to a device composed of multiple cells, however the usage has evolved additionally to include devices composed of a single cell.[4]'},
{'para': 'Primary (single-use or 'disposable') batteries are used once and discarded; the electrode materials are irreversibly changed during discharge. Common examples are the alkaline battery used for flashlights and a multitude of portable electronic devices. Secondary (rechargeable) batteries can be discharged and recharged multiple
...

Menggores Beberapa Elemen

Sejauh ini perayap web telah menggores judul dan satu jenis elemen dari halaman. Scrapy juga dapat mengekstrak informasi dari berbagai jenis elemen dalam satu skrip.

Mari kita ekstrak top IMDb Box Office hits untuk akhir pekan. Informasi ini diambil dari http://www.imdb.com/chart/boxoffice , dalam tabel dengan baris untuk setiap metrik.

NS mengurai() metode dapat mengekstrak lebih dari satu bidang dari baris. Menggunakan Alat Pengembang Chrome, Anda dapat menemukan elemen yang bersarang di dalam tabel.

...
def parse(self, response):
for e in response.css('div#boxoffice>table>tbody>tr'):
yield {
'title': ''.join(e.css('td.titleColumn>a::text').extract()).strip(),
'weekend': ''.join(e.css('td.ratingColumn')[0].css('::text').extract()).strip(),
'gross': ''.join(e.css('td.ratingColumn')[1].css('span.secondaryInfo::text').extract()).strip(),
'weeks': ''.join(e.css('td.weeksColumn::text').extract()).strip(),
'image': e.css('td.posterColumn img::attr(src)').extract_first(),
}
...

NS gambar pemilih menentukan bahwa gambar merupakan keturunan dari td.posterColumn . Untuk mengekstrak atribut yang tepat, gunakan ekspresi |_+_|.

Menjalankan laba-laba mengembalikan JSON:

::attr(src)

Lebih banyak Scraper dan Bot Web

Scrapy adalah pustaka terperinci yang dapat melakukan hampir semua jenis perayapan web yang Anda minta. Ketika datang untuk menemukan informasi dalam elemen HTML, dikombinasikan dengan dukungan Python, sulit untuk dikalahkan. Baik Anda sedang membangun perayap web atau mempelajari dasar-dasar pengikisan web, satu-satunya batasan adalah seberapa banyak Anda mau belajar.

Jika Anda mencari lebih banyak cara untuk membuat crawler atau bot, Anda dapat mencobanya buat bot Twitter dan Instagram menggunakan Python . Python dapat membangun beberapa hal luar biasa dalam pengembangan web , jadi ada baiknya melampaui perayap web saat menjelajahi bahasa ini.

Membagikan Membagikan Menciak Surel 15 Perintah Command Prompt (CMD) Windows yang Harus Anda Ketahui

Prompt perintah masih merupakan alat Windows yang kuat. Berikut adalah perintah CMD paling berguna yang perlu diketahui setiap pengguna Windows.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • Alat Webmaster
  • Pemrograman
  • Python
  • Tutorial Pengkodean
  • Perayap Web
Tentang Penulis Anthony Grant(40 Artikel Diterbitkan)

Anthony Grant adalah penulis lepas yang meliput Pemrograman dan Perangkat Lunak. Dia jurusan Ilmu Komputer yang berkecimpung dalam pemrograman, Excel, perangkat lunak, dan teknologi.

More From Anthony Grant

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan