Python Web Scraping - Panduan Cepat
Scraping web adalah proses otomatis mengekstraksi informasi dari web. Bab ini akan memberi Anda gambaran mendalam tentang web scraping, perbandingannya dengan web crawling, dan mengapa Anda harus memilih web scraping. Anda juga akan belajar tentang komponen dan cara kerja web scraper.
Apa itu Scraping Web?
Arti kamus dari kata 'Scrapping' menyiratkan mendapatkan sesuatu dari web. Di sini muncul dua pertanyaan: Apa yang bisa kita dapatkan dari web dan Bagaimana mendapatkannya.
Jawaban dari pertanyaan pertama adalah ‘data’. Data sangat diperlukan untuk setiap programmer dan persyaratan dasar dari setiap proyek pemrograman adalah sejumlah besar data yang berguna.
Jawaban pertanyaan kedua agak sedikit rumit, karena banyak cara untuk mendapatkan data. Secara umum kita dapat memperoleh data dari database atau file data dan sumber lainnya. Tetapi bagaimana jika kita membutuhkan sejumlah besar data yang tersedia secara online? Salah satu cara untuk mendapatkan data semacam itu adalah dengan mencari secara manual (mengklik di browser web) dan menyimpan (menyalin-tempel ke dalam spreadsheet atau file) data yang diperlukan. Cara ini cukup melelahkan dan memakan waktu. Cara lain untuk mendapatkan data tersebut adalah dengan menggunakanweb scraping.
Web scraping, disebut juga web data mining atau web harvesting, adalah proses membangun agen yang dapat mengekstrak, mengurai, mengunduh, dan mengatur informasi berguna dari web secara otomatis. Dengan kata lain, kami dapat mengatakan bahwa alih-alih menyimpan data dari situs web secara manual, perangkat lunak pengikis web akan secara otomatis memuat dan mengekstrak data dari beberapa situs web sesuai kebutuhan kami.
Asal dari Web Scraping
Asal mula web scraping adalah screen scrapping, yang digunakan untuk mengintegrasikan aplikasi non-web atau aplikasi windows asli. Awalnya pengikisan layar digunakan sebelum penggunaan World Wide Web (WWW) secara luas, tetapi tidak dapat meningkatkan WWW diperluas. Ini membuatnya perlu untuk mengotomatiskan pendekatan pengikisan layar dan teknik yang disebut‘Web Scraping’ muncul.
Web Crawling vs Web Scraping
Istilah Web Crawling dan Scraping sering digunakan secara bergantian karena konsep dasarnya adalah mengekstrak data. Namun, mereka berbeda satu sama lain. Kita dapat memahami perbedaan mendasar dari definisi mereka.
Crawling web pada dasarnya digunakan untuk mengindeks informasi pada halaman menggunakan bot alias crawler. Itu juga disebutindexing. Di sisi lain, web scraping adalah cara otomatis untuk mengekstrak informasi menggunakan bot alias scrapers. Itu juga disebutdata extraction.
Untuk memahami perbedaan antara kedua istilah ini, mari kita lihat tabel perbandingan yang diberikan di bawah ini -
Perayapan Web | Scraping Web |
---|---|
Mengacu pada mengunduh dan menyimpan konten dari sejumlah besar situs web. | Mengacu pada penggalian elemen data individu dari situs web dengan menggunakan struktur khusus situs. |
Sebagian besar dilakukan dalam skala besar. | Dapat diimplementasikan dalam skala apapun. |
Menghasilkan informasi umum. | Menghasilkan informasi spesifik. |
Digunakan oleh mesin pencari utama seperti Google, Bing, Yahoo. Googlebot adalah contoh web crawler. | Informasi yang diekstrak menggunakan web scraping dapat digunakan untuk mereplikasi di beberapa situs lain atau dapat digunakan untuk melakukan analisis data. Misalnya elemen data bisa berupa nama, alamat, harga dll. |
Penggunaan Web Scraping
Penggunaan dan alasan penggunaan web scraping tidak terbatas seperti penggunaan World Wide Web. Pencakar web dapat melakukan apa saja seperti memesan makanan online, memindai situs belanja online untuk Anda dan membeli tiket pertandingan saat tersedia, dll. Seperti yang dapat dilakukan manusia. Beberapa kegunaan penting dari web scraping dibahas di sini -
E-commerce Websites - Pengikis web dapat mengumpulkan data yang secara khusus terkait dengan harga produk tertentu dari berbagai situs web e-niaga untuk perbandingan.
Content Aggregators - Scraping web digunakan secara luas oleh agregator konten seperti agregator berita dan agregator pekerjaan untuk menyediakan data terbaru kepada penggunanya.
Marketing and Sales Campaigns - Pengikis web dapat digunakan untuk mendapatkan data seperti email, nomor telepon, dll. Untuk kampanye penjualan dan pemasaran.
Search Engine Optimization (SEO) - Scraping web banyak digunakan oleh alat SEO seperti SEMRush, Majestic dll. Untuk memberi tahu bisnis bagaimana peringkat mereka untuk kata kunci pencarian yang penting bagi mereka.
Data for Machine Learning Projects - Pengambilan data untuk proyek pembelajaran mesin bergantung pada scraping web.
Data for Research - Peneliti dapat mengumpulkan data yang berguna untuk tujuan pekerjaan penelitian mereka dengan menghemat waktu mereka dengan proses otomatis ini.
Komponen Web Scraper
Scraper web terdiri dari komponen berikut -
Modul Web Crawler
Komponen pengikis web yang sangat diperlukan, modul perayap web, digunakan untuk menavigasi situs web target dengan membuat permintaan HTTP atau HTTPS ke URL. Crawler mendownload data tidak terstruktur (konten HTML) dan meneruskannya ke ekstraktor, modul berikutnya.
Alat pengambilan sari
Ekstraktor memproses konten HTML yang diambil dan mengekstrak data ke dalam format semi-terstruktur. Ini juga disebut sebagai modul parser dan menggunakan teknik parsing yang berbeda seperti Regular expression, HTML Parsing, DOM parsing atau Artificial Intelligence untuk fungsinya.
Modul Transformasi dan Pembersihan Data
Data yang diekstrak di atas tidak cocok untuk digunakan secara siap. Itu harus melewati beberapa modul pembersihan agar kita bisa menggunakannya. Metode seperti manipulasi string atau ekspresi reguler dapat digunakan untuk tujuan ini. Perhatikan bahwa ekstraksi dan transformasi juga dapat dilakukan dalam satu langkah.
Modul Penyimpanan
Setelah mengekstrak data, kami perlu menyimpannya sesuai kebutuhan kami. Modul penyimpanan akan mengeluarkan data dalam format standar yang dapat disimpan dalam database atau format JSON atau CSV.
Bekerja dari Web Scraper
Pengikis web dapat didefinisikan sebagai perangkat lunak atau skrip yang digunakan untuk mengunduh konten dari beberapa halaman web dan mengekstrak data darinya.
Kita dapat memahami cara kerja pengikis web dalam langkah-langkah sederhana seperti yang ditunjukkan pada diagram di atas.
Langkah 1: Mengunduh Konten dari Halaman Web
Pada langkah ini, web scraper akan mengunduh konten yang diminta dari beberapa halaman web.
Langkah 2: Mengekstrak Data
Data di situs web adalah HTML dan sebagian besar tidak terstruktur. Karenanya, pada langkah ini, web scraper akan mengurai dan mengekstrak data terstruktur dari konten yang diunduh.
Langkah 3: Menyimpan Data
Di sini, pengikis web akan menyimpan dan menyimpan data yang diekstrak dalam format apa pun seperti CSV, JSON, atau dalam database.
Langkah 4: Menganalisis Data
Setelah semua langkah tersebut berhasil dilakukan, web scraper akan menganalisis data yang diperoleh.
Di bab pertama, kita telah mempelajari apa itu web scraping. Di bab ini, mari kita lihat bagaimana menerapkan web scraping menggunakan Python.
Mengapa Python untuk Web Scraping?
Python adalah alat yang populer untuk mengimplementasikan web scraping. Bahasa pemrograman Python juga digunakan untuk proyek berguna lainnya yang berkaitan dengan keamanan dunia maya, pengujian penetrasi serta aplikasi forensik digital. Menggunakan pemrograman dasar Python, web scraping dapat dilakukan tanpa menggunakan alat pihak ketiga lainnya.
Bahasa pemrograman Python mendapatkan popularitas yang besar dan alasan yang membuat Python cocok untuk proyek web scraping adalah sebagai berikut -
Kesederhanaan Sintaks
Python memiliki struktur yang paling sederhana jika dibandingkan dengan bahasa pemrograman lainnya. Fitur Python ini membuat pengujian lebih mudah dan pengembang dapat lebih fokus pada pemrograman.
Modul Inbuilt
Alasan lain untuk menggunakan Python untuk web scraping adalah pustaka berguna internal dan eksternal yang dimilikinya. Kita dapat melakukan banyak implementasi yang berhubungan dengan web scraping dengan menggunakan Python sebagai basis pemrogramannya.
Bahasa Pemrograman Sumber Terbuka
Python mendapat dukungan besar dari komunitas karena merupakan bahasa pemrograman open source.
Beragam Aplikasi
Python dapat digunakan untuk berbagai tugas pemrograman mulai dari skrip shell kecil hingga aplikasi web perusahaan.
Instalasi Python
Distribusi Python tersedia untuk platform seperti Windows, MAC dan Unix / Linux. Kami hanya perlu mengunduh kode biner yang berlaku untuk platform kami untuk menginstal Python. Tetapi jika kode biner untuk platform kita tidak tersedia, kita harus memiliki kompiler C agar kode sumber dapat dikompilasi secara manual.
Kita dapat menginstal Python di berbagai platform sebagai berikut -
Menginstal Python di Unix dan Linux
Anda perlu mengikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Python pada mesin Unix / Linux -
Step 1 - Buka tautannya https://www.python.org/downloads/
Step 2 - Unduh kode sumber zip yang tersedia untuk Unix / Linux pada tautan di atas.
Step 3 - Ekstrak file ke komputer Anda.
Step 4 - Gunakan perintah berikut untuk menyelesaikan instalasi -
run ./configure script
make
make install
Anda dapat menemukan Python yang diinstal di lokasi standar /usr/local/bin dan perpustakaannya di /usr/local/lib/pythonXX, di mana XX adalah versi Python.
Menginstal Python di Windows
Anda perlu mengikuti langkah-langkah yang diberikan di bawah ini untuk menginstal Python di mesin Windows -
Step 1 - Buka tautannya https://www.python.org/downloads/
Step 2 - Unduh penginstal Windows python-XYZ.msi file, di mana XYZ adalah versi yang perlu kita instal.
Step 3 - Sekarang, simpan file penginstal ke komputer lokal Anda dan jalankan file MSI.
Step 4 - Terakhir, jalankan file yang diunduh untuk membuka wizard penginstalan Python.
Menginstal Python di Macintosh
Kita harus menggunakan Homebrew untuk menginstal Python 3 di Mac OS X. Homebrew mudah diinstal dan merupakan penginstal paket yang hebat.
Homebrew juga dapat diinstal dengan menggunakan perintah berikut -
$ ruby -e "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/master/install)"
Untuk memperbarui manajer paket, kita dapat menggunakan perintah berikut -
$ brew update
Dengan bantuan perintah berikut, kita dapat menginstal Python3 di mesin MAC kita -
$ brew install python3
Menyiapkan PATH
Anda dapat menggunakan instruksi berikut untuk mengatur jalur di berbagai lingkungan -
Menyiapkan Path di Unix / Linux
Gunakan perintah berikut untuk menyiapkan jalur menggunakan berbagai shell perintah -
Untuk csh shell
setenv PATH "$PATH:/usr/local/bin/python".
Untuk bash shell (Linux)
ATH="$PATH:/usr/local/bin/python".
Untuk shell sh atau ksh
PATH="$PATH:/usr/local/bin/python".
Menyiapkan Path di Windows
Untuk setting path di Windows, kita bisa menggunakan path %path%;C:\Python pada prompt perintah dan kemudian tekan Enter.
Menjalankan Python
Kita dapat memulai Python menggunakan salah satu dari tiga cara berikut -
Penerjemah Interaktif
Sistem operasi seperti UNIX dan DOS yang menyediakan interpreter baris perintah atau shell dapat digunakan untuk memulai Python.
Kita dapat memulai pengkodean dalam interpreter interaktif sebagai berikut -
Step 1 - Masuk python di baris perintah.
Step 2 - Lalu, kita bisa mulai coding langsung di interpreter interaktif.
$python # Unix/Linux
or
python% # Unix/Linux
or
C:> python # Windows/DOS
Script dari Command-line
Kita dapat menjalankan skrip Python di baris perintah dengan memanggil juru bahasa. Dapat dipahami sebagai berikut -
$python script.py # Unix/Linux
or
python% script.py # Unix/Linux
or
C: >python script.py # Windows/DOS
Lingkungan Pembangunan Terpadu
Kita juga dapat menjalankan Python dari lingkungan GUI jika sistem memiliki aplikasi GUI yang mendukung Python. Beberapa IDE yang mendukung Python pada berbagai platform diberikan di bawah ini -
IDE for UNIX - UNIX, untuk Python, memiliki IDLE IDE.
IDE for Windows - Windows memiliki IDE PythonWin yang memiliki GUI juga.
IDE for Macintosh - Macintosh memiliki IDLE IDE yang dapat diunduh sebagai file MacBinary atau BinHex dari situs web utama.
Di bab ini, mari kita pelajari berbagai modul Python yang dapat kita gunakan untuk web scraping.
Lingkungan Pengembangan Python menggunakan virtualenv
Virtualenv adalah alat untuk membuat lingkungan Python yang terisolasi. Dengan bantuan virtualenv, kita dapat membuat folder yang berisi semua executable yang diperlukan untuk menggunakan paket yang dibutuhkan oleh proyek Python kita. Ini juga memungkinkan kita untuk menambah dan memodifikasi modul Python tanpa akses ke instalasi global.
Anda dapat menggunakan perintah berikut untuk menginstal virtualenv -
(base) D:\ProgramData>pip install virtualenv
Collecting virtualenv
Downloading
https://files.pythonhosted.org/packages/b6/30/96a02b2287098b23b875bc8c2f58071c3
5d2efe84f747b64d523721dc2b5/virtualenv-16.0.0-py2.py3-none-any.whl
(1.9MB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 1.9MB 86kB/s
Installing collected packages: virtualenv
Successfully installed virtualenv-16.0.0
Sekarang, kita perlu membuat direktori yang akan mewakili proyek dengan bantuan perintah berikut -
(base) D:\ProgramData>mkdir webscrap
Sekarang, masuk ke direktori itu dengan bantuan perintah berikut ini -
(base) D:\ProgramData>cd webscrap
Sekarang, kita perlu menginisialisasi folder lingkungan virtual pilihan kita sebagai berikut -
(base) D:\ProgramData\webscrap>virtualenv websc
Using base prefix 'd:\\programdata'
New python executable in D:\ProgramData\webscrap\websc\Scripts\python.exe
Installing setuptools, pip, wheel...done.
Sekarang, aktifkan lingkungan virtual dengan perintah yang diberikan di bawah ini. Setelah berhasil diaktifkan, Anda akan melihat namanya di sisi kiri dalam tanda kurung.
(base) D:\ProgramData\webscrap>websc\scripts\activate
Kami dapat menginstal modul apa pun di lingkungan ini sebagai berikut -
(websc) (base) D:\ProgramData\webscrap>pip install requests
Collecting requests
Downloading
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl (9
1kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 148kB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests)
Downloading
https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca
55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133
kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 369kB/s
Collecting certifi>=2017.4.17 (from requests)
Downloading
https://files.pythonhosted.org/packages/df/f7/04fee6ac349e915b82171f8e23cee6364
4d83663b34c539f7a09aed18f9e/certifi-2018.8.24-py2.py3-none-any.whl
(147kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 153kB 527kB/s
Collecting urllib3<1.24,>=1.21.1 (from requests)
Downloading
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl (133k
B)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 143kB 517kB/s
Collecting idna<2.8,>=2.5 (from requests)
Downloading
https://files.pythonhosted.org/packages/4b/2a/0276479a4b3caeb8a8c1af2f8e4355746
a97fab05a372e4a2c6a6b876165/idna-2.7-py2.py3-none-any.whl (58kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 61kB 339kB/s
Installing collected packages: chardet, certifi, urllib3, idna, requests
Successfully installed certifi-2018.8.24 chardet-3.0.4 idna-2.7 requests-2.19.1
urllib3-1.23
Untuk menonaktifkan lingkungan virtual, kita dapat menggunakan perintah berikut -
(websc) (base) D:\ProgramData\webscrap>deactivate
(base) D:\ProgramData\webscrap>
Anda dapat melihat bahwa (websc) telah dinonaktifkan.
Modul Python untuk Scraping Web
Scraping web adalah proses membangun agen yang dapat mengekstrak, mengurai, mengunduh, dan mengatur informasi berguna dari web secara otomatis. Dengan kata lain, alih-alih menyimpan data dari situs web secara manual, perangkat lunak pengikis web akan secara otomatis memuat dan mengekstrak data dari beberapa situs web sesuai kebutuhan kami.
Di bagian ini, kita akan membahas tentang pustaka Python yang berguna untuk web scraping.
Permintaan
Ini adalah perpustakaan scraping web python sederhana. Ini adalah pustaka HTTP efisien yang digunakan untuk mengakses halaman web. Dengan bantuan dariRequests, kita bisa mendapatkan HTML mentah dari halaman web yang kemudian dapat diurai untuk mengambil data. Sebelum menggunakanrequests, mari kita pahami pemasangannya.
Menginstal Permintaan
Kita dapat menginstalnya di lingkungan virtual kita atau di instalasi global. Dengan bantuan daripip perintah, kita dapat dengan mudah menginstalnya sebagai berikut -
(base) D:\ProgramData> pip install requests
Collecting requests
Using cached
https://files.pythonhosted.org/packages/65/47/7e02164a2a3db50ed6d8a6ab1d6d60b69
c4c3fdf57a284257925dfc12bda/requests-2.19.1-py2.py3-none-any.whl
Requirement already satisfied: idna<2.8,>=2.5 in d:\programdata\lib\sitepackages
(from requests) (2.6)
Requirement already satisfied: urllib3<1.24,>=1.21.1 in
d:\programdata\lib\site-packages (from requests) (1.22)
Requirement already satisfied: certifi>=2017.4.17 in d:\programdata\lib\sitepackages
(from requests) (2018.1.18)
Requirement already satisfied: chardet<3.1.0,>=3.0.2 in
d:\programdata\lib\site-packages (from requests) (3.0.4)
Installing collected packages: requests
Successfully installed requests-2.19.1
Contoh
Dalam contoh ini, kami membuat permintaan GET HTTP untuk halaman web. Untuk ini, pertama-tama kita perlu mengimpor pustaka permintaan sebagai berikut -
In [1]: import requests
Di baris kode berikut ini, kami menggunakan permintaan untuk membuat permintaan HTTP GET untuk url: https://authoraditiagarwal.com/ dengan membuat permintaan GET.
In [2]: r = requests.get('https://authoraditiagarwal.com/')
Sekarang kita bisa mengambil konten dengan menggunakan .text properti sebagai berikut -
In [5]: r.text[:200]
Perhatikan bahwa pada keluaran berikut, kita mendapat 200 karakter pertama.
Out[5]: '<!DOCTYPE html>\n<html lang="en-US"\n\titemscope
\n\titemtype="http://schema.org/WebSite" \n\tprefix="og: http://ogp.me/ns#"
>\n<head>\n\t<meta charset
="UTF-8" />\n\t<meta http-equiv="X-UA-Compatible" content="IE'
Urllib3
Ini adalah pustaka Python lain yang dapat digunakan untuk mengambil data dari URL yang mirip dengan requestsPerpustakaan. Anda dapat membaca lebih lanjut tentang ini di dokumentasi teknisnya dihttps://urllib3.readthedocs.io/en/latest/.
Menginstal Urllib3
Menggunakan pip perintah, kita dapat menginstal urllib3 baik di lingkungan virtual kami atau di instalasi global.
(base) D:\ProgramData>pip install urllib3
Collecting urllib3
Using cached
https://files.pythonhosted.org/packages/bd/c9/6fdd990019071a4a32a5e7cb78a1d92c5
3851ef4f56f62a3486e6a7d8ffb/urllib3-1.23-py2.py3-none-any.whl
Installing collected packages: urllib3
Successfully installed urllib3-1.23
Contoh: Mengikis menggunakan Urllib3 dan BeautifulSoup
Dalam contoh berikut, kami mengikis halaman web dengan menggunakan Urllib3 dan BeautifulSoup. Kami menggunakanUrllib3di tempat perpustakaan permintaan untuk mendapatkan data mentah (HTML) dari halaman web. Kemudian kami menggunakanBeautifulSoup untuk mengurai data HTML itu.
import urllib3
from bs4 import BeautifulSoup
http = urllib3.PoolManager()
r = http.request('GET', 'https://authoraditiagarwal.com')
soup = BeautifulSoup(r.data, 'lxml')
print (soup.title)
print (soup.title.text)
Ini adalah keluaran yang akan Anda amati ketika Anda menjalankan kode ini -
<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal
Selenium
Ini adalah rangkaian pengujian otomatis open source untuk aplikasi web di berbagai browser dan platform. Ini bukan alat tunggal tetapi seperangkat perangkat lunak. Kami memiliki binding selenium untuk Python, Java, C #, Ruby dan JavaScript. Di sini kita akan melakukan web scraping dengan menggunakan selenium dan binding Python-nya. Anda dapat mempelajari lebih lanjut tentang Selenium dengan Java di tautan Selenium .
Binding Selenium Python menyediakan API yang nyaman untuk mengakses Selenium WebDrivers seperti Firefox, IE, Chrome, Remote dll. Versi Python yang didukung saat ini adalah 2.7, 3.5 dan yang lebih baru.
Menginstal Selenium
Menggunakan pip perintah, kita dapat menginstal urllib3 baik di lingkungan virtual kami atau di instalasi global.
pip install selenium
Karena selenium membutuhkan driver untuk berinteraksi dengan browser yang dipilih, kita perlu mendownloadnya. Tabel berikut menunjukkan browser yang berbeda dan tautannya untuk mengunduh yang sama.
Chrome |
https://sites.google.com/a/chromium.org/ |
Edge |
https://developer.microsoft.com/ |
Firefox |
https://github.com/ |
Safari |
https://webkit.org/ |
Contoh
Contoh ini menunjukkan web scraping menggunakan selenium. Ini juga dapat digunakan untuk pengujian yang disebut pengujian selenium.
Setelah mengunduh driver tertentu untuk versi browser yang ditentukan, kita perlu melakukan pemrograman dengan Python.
Pertama, perlu impor webdriver dari selenium sebagai berikut -
from selenium import webdriver
Sekarang, berikan jalur driver web yang telah kami unduh sesuai kebutuhan kami -
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
Sekarang, sediakan url yang ingin kita buka di browser web yang sekarang dikontrol oleh skrip Python kita.
browser.get('https://authoraditiagarwal.com/leadershipmanagement')
Kita juga bisa mengikis elemen tertentu dengan menyediakan xpath seperti yang disediakan di lxml.
browser.find_element_by_xpath('/html/body').click()
Anda dapat memeriksa browser, dikendalikan oleh skrip Python, untuk keluaran.
Scrapy
Scrapy adalah kerangka kerja perayapan web sumber terbuka yang cepat yang ditulis dengan Python, digunakan untuk mengekstrak data dari halaman web dengan bantuan penyeleksi berdasarkan XPath. Scrapy pertama kali dirilis pada 26 Juni 2008 dengan lisensi di bawah BSD, dengan milestone 1.0 dirilis pada Juni 2015. Scrapy menyediakan semua alat yang kami butuhkan untuk mengekstrak, memproses, dan menyusun data dari situs web.
Memasang Scrapy
Menggunakan pip perintah, kita dapat menginstal urllib3 baik di lingkungan virtual kami atau di instalasi global.
pip install scrapy
Untuk studi lebih detail tentang Scrapy Anda dapat mengunjungi tautan Scrapy
Dengan Python, kita dapat mengikis situs web apa pun atau elemen tertentu dari halaman web tetapi apakah Anda tahu apakah itu legal atau tidak? Sebelum melakukan scraping website apapun kita harus mengetahui tentang legalitas web scraping. Bab ini akan menjelaskan konsep-konsep yang terkait dengan legalitas web scraping.
pengantar
Umumnya, jika Anda akan menggunakan data bekas untuk penggunaan pribadi, mungkin tidak ada masalah. Tetapi jika Anda akan memublikasikan ulang data tersebut, sebelum melakukan hal yang sama Anda harus membuat permintaan unduhan kepada pemilik atau melakukan penelitian latar belakang tentang kebijakan serta tentang data yang akan Anda hapus.
Diperlukan Penelitian Sebelum Mengikis
Jika Anda menargetkan situs web untuk mengambil data darinya, kami perlu memahami skala dan strukturnya. Berikut adalah beberapa file yang perlu kami analisis sebelum memulai web scraping.
Menganalisis robots.txt
Sebenarnya sebagian besar penerbit mengizinkan pemrogram untuk merayapi situs web mereka pada tingkat tertentu. Dengan kata lain, penerbit ingin bagian tertentu dari situs web dirayapi. Untuk menentukan ini, situs web harus membuat beberapa aturan untuk menyatakan bagian mana yang dapat di-crawl dan mana yang tidak. Aturan semacam itu didefinisikan dalam file bernamarobots.txt.
robots.txtadalah file yang dapat dibaca manusia yang digunakan untuk mengidentifikasi bagian situs web yang diizinkan dan tidak boleh dikikis oleh crawler. Tidak ada format standar file robots.txt dan penerbit situs web dapat melakukan modifikasi sesuai kebutuhan mereka. Kami dapat memeriksa file robots.txt untuk situs web tertentu dengan memberikan garis miring dan robots.txt setelah url situs web tersebut. Misalnya, jika kita ingin memeriksanya untuk Google.com, maka kita perlu mengetikhttps://www.google.com/robots.txt dan kami akan mendapatkan sesuatu sebagai berikut -
User-agent: *
Disallow: /search
Allow: /search/about
Allow: /search/static
Allow: /search/howsearchworks
Disallow: /sdch
Disallow: /groups
Disallow: /index.html?
Disallow: /?
Allow: /?hl=
Disallow: /?hl=*&
Allow: /?hl=*&gws_rd=ssl$
and so on……..
Beberapa aturan paling umum yang ditentukan dalam file robots.txt situs web adalah sebagai berikut -
User-agent: BadCrawler
Disallow: /
Aturan di atas berarti file robots.txt meminta crawler dengan BadCrawler agen pengguna untuk tidak merayapi situs web mereka.
User-agent: *
Crawl-delay: 5
Disallow: /trap
Aturan di atas berarti file robots.txt menunda crawler selama 5 detik antara permintaan download untuk semua agen pengguna untuk menghindari server kelebihan beban. Itu/traplink akan mencoba memblokir crawler berbahaya yang mengikuti link yang tidak diizinkan. Ada lebih banyak aturan yang dapat ditentukan oleh penerbit situs web sesuai kebutuhan mereka. Beberapa dari mereka dibahas di sini -
Menganalisis file Peta Situs
Apa yang harus Anda lakukan jika ingin merayapi situs web untuk informasi terbaru? Anda akan merayapi setiap halaman web untuk mendapatkan informasi yang diperbarui, tetapi ini akan meningkatkan lalu lintas server dari situs web tersebut. Itulah sebabnya situs web menyediakan file peta situs untuk membantu perayap menemukan konten yang diperbarui tanpa perlu merayapi setiap laman web. Standar peta situs didefinisikan dihttp://www.sitemaps.org/protocol.html.
Isi file Peta Situs
Berikut ini adalah isi file peta situs https://www.microsoft.com/robots.txt yang ditemukan di file robot.txt -
Sitemap: https://www.microsoft.com/en-us/explore/msft_sitemap_index.xml
Sitemap: https://www.microsoft.com/learning/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/licensing/sitemap.xml
Sitemap: https://www.microsoft.com/en-us/legal/sitemap.xml
Sitemap: https://www.microsoft.com/filedata/sitemaps/RW5xN8
Sitemap: https://www.microsoft.com/store/collections.xml
Sitemap: https://www.microsoft.com/store/productdetailpages.index.xml
Sitemap: https://www.microsoft.com/en-us/store/locations/store-locationssitemap.xml
Konten di atas menunjukkan bahwa peta situs mencantumkan URL di situs web dan selanjutnya memungkinkan webmaster untuk menentukan beberapa informasi tambahan seperti tanggal terakhir diperbarui, perubahan konten, pentingnya URL terkait dengan yang lain, dll. Tentang setiap URL.
Berapa Ukuran Situs Web?
Apakah ukuran situs web, yaitu jumlah halaman web dari situs web memengaruhi cara kita merayapi? Tentu iya. Karena jika kita memiliki jumlah halaman web yang lebih sedikit untuk di-crawl, maka efisiensi tidak akan menjadi masalah serius, tetapi misalkan jika situs web kita memiliki jutaan halaman web, misalnya Microsoft.com, maka mengunduh setiap halaman web secara berurutan akan memakan waktu beberapa bulan dan maka efisiensi akan menjadi perhatian serius.
Memeriksa Ukuran Situs Web
Dengan memeriksa ukuran hasil crawler Google, kita dapat memperkirakan ukuran sebuah situs web. Hasil kami dapat disaring dengan menggunakan kata kuncisitesaat melakukan pencarian Google. Misalnya, memperkirakan ukuranhttps://authoraditiagarwal.com/ diberikan di bawah -
Anda dapat melihat ada sekitar 60 hasil yang berarti ini bukan situs web besar dan perayapan tidak akan menyebabkan masalah efisiensi.
Teknologi apa yang digunakan oleh situs web?
Pertanyaan penting lainnya adalah apakah teknologi yang digunakan oleh situs web memengaruhi cara kami merayapi? Ya, itu mempengaruhi. Tetapi bagaimana kita dapat memeriksa tentang teknologi yang digunakan oleh sebuah situs web? Ada pustaka Python bernamabuiltwith dengan bantuan yang kami dapat mengetahui tentang teknologi yang digunakan oleh situs web.
Contoh
Dalam contoh ini kita akan memeriksa teknologi yang digunakan oleh situs web https://authoraditiagarwal.com dengan bantuan pustaka Python builtwith. Tetapi sebelum menggunakan pustaka ini, kita perlu menginstalnya sebagai berikut -
(base) D:\ProgramData>pip install builtwith
Collecting builtwith
Downloading
https://files.pythonhosted.org/packages/9b/b8/4a320be83bb3c9c1b3ac3f9469a5d66e0
2918e20d226aa97a3e86bddd130/builtwith-1.3.3.tar.gz
Requirement already satisfied: six in d:\programdata\lib\site-packages (from
builtwith) (1.10.0)
Building wheels for collected packages: builtwith
Running setup.py bdist_wheel for builtwith ... done
Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\2b\00\c2\a96241e7fe520e75093898b
f926764a924873e0304f10b2524
Successfully built builtwith
Installing collected packages: builtwith
Successfully installed builtwith-1.3.3
Sekarang, dengan bantuan mengikuti baris kode sederhana, kami dapat memeriksa teknologi yang digunakan oleh situs web tertentu -
In [1]: import builtwith
In [2]: builtwith.parse('http://authoraditiagarwal.com')
Out[2]:
{'blogs': ['PHP', 'WordPress'],
'cms': ['WordPress'],
'ecommerce': ['WooCommerce'],
'font-scripts': ['Font Awesome'],
'javascript-frameworks': ['jQuery'],
'programming-languages': ['PHP'],
'web-servers': ['Apache']}
Siapa pemilik situs web?
Pemilik situs web juga penting karena jika pemiliknya diketahui memblokir perayap, maka perayap harus berhati-hati saat mengambil data dari situs web. Ada protokol bernamaWhois dengan bantuan yang kami dapat mengetahui tentang pemilik situs web.
Contoh
Dalam contoh ini kita akan memeriksa pemilik situs web mengatakan microsoft.com dengan bantuan Whois. Tetapi sebelum menggunakan pustaka ini, kita perlu menginstalnya sebagai berikut -
(base) D:\ProgramData>pip install python-whois
Collecting python-whois
Downloading
https://files.pythonhosted.org/packages/63/8a/8ed58b8b28b6200ce1cdfe4e4f3bbc8b8
5a79eef2aa615ec2fef511b3d68/python-whois-0.7.0.tar.gz (82kB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 92kB 164kB/s
Requirement already satisfied: future in d:\programdata\lib\site-packages (from
python-whois) (0.16.0)
Building wheels for collected packages: python-whois
Running setup.py bdist_wheel for python-whois ... done
Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\06\cb\7d\33704632b0e1bb64460dc2b
4dcc81ab212a3d5e52ab32dc531
Successfully built python-whois
Installing collected packages: python-whois
Successfully installed python-whois-0.7.0
Sekarang, dengan bantuan mengikuti baris kode sederhana, kami dapat memeriksa teknologi yang digunakan oleh situs web tertentu -
In [1]: import whois
In [2]: print (whois.whois('microsoft.com'))
{
"domain_name": [
"MICROSOFT.COM",
"microsoft.com"
],
-------
"name_servers": [
"NS1.MSFT.NET",
"NS2.MSFT.NET",
"NS3.MSFT.NET",
"NS4.MSFT.NET",
"ns3.msft.net",
"ns1.msft.net",
"ns4.msft.net",
"ns2.msft.net"
],
"emails": [
"[email protected]",
"[email protected]",
"[email protected]",
"[email protected]"
],
}
Menganalisis halaman web berarti memahami strukturnya. Sekarang, muncul pertanyaan mengapa penting untuk web scraping? Dalam bab ini, mari kita pahami hal ini secara mendetail.
Analisis halaman web
Analisis halaman web penting karena tanpa analisis kita tidak dapat mengetahui dalam bentuk mana kita akan menerima data dari (terstruktur atau tidak terstruktur) halaman web tersebut setelah ekstraksi. Kita dapat melakukan analisis halaman web dengan cara berikut -
Melihat Sumber Halaman
Ini adalah cara untuk memahami bagaimana halaman web disusun dengan memeriksa kode sumbernya. Untuk menerapkan ini, kita perlu mengklik kanan halaman tersebut dan kemudian harus memilihView page sourcepilihan. Kemudian, kita akan mendapatkan data yang kita minati dari halaman web tersebut dalam bentuk HTML. Tetapi perhatian utama adalah tentang spasi dan pemformatan yang sulit bagi kami untuk memformat.
Memeriksa Sumber Halaman dengan Mengklik Opsi Elemen Inspeksi
Ini adalah cara lain untuk menganalisis halaman web. Tetapi perbedaannya adalah itu akan menyelesaikan masalah pemformatan dan spasi putih di kode sumber halaman web. Anda dapat menerapkan ini dengan mengklik kanan dan kemudian memilihInspect atau Inspect elementopsi dari menu. Ini akan memberikan informasi tentang area atau elemen tertentu dari halaman web itu.
Berbagai Cara Mengekstrak Data dari Halaman Web
Metode berikut ini banyak digunakan untuk mengekstrak data dari halaman web -
Ekspresi Reguler
Mereka adalah bahasa pemrograman yang sangat terspesialisasi yang tertanam dalam Python. Kita bisa menggunakannyaremodul Python. Ini juga disebut pola RE atau regex atau regex. Dengan bantuan ekspresi reguler, kita dapat menentukan beberapa aturan untuk kumpulan string yang mungkin ingin kita cocokkan dari data.
Jika Anda ingin mempelajari lebih lanjut tentang ekspresi reguler secara umum, buka tautan https://www.tutorialspoint.com/automata_theory/regular_expressions.htmdan jika Anda ingin tahu lebih banyak tentang modul ulang atau ekspresi reguler di Python, Anda dapat mengikuti tautan https://www.tutorialspoint.com/python/python_reg_expressions.htm .
Contoh
Dalam contoh berikut, kami akan mengambil data tentang India dari http://example.webscraping.com setelah mencocokkan konten <td> dengan bantuan ekspresi reguler.
import re
import urllib.request
response =
urllib.request.urlopen('http://example.webscraping.com/places/default/view/India-102')
html = response.read()
text = html.decode()
re.findall('<td class="w2p_fw">(.*?)</td>',text)
Keluaran
Output yang sesuai akan ditampilkan di sini -
[
'<img src="/places/static/images/flags/in.png" />',
'3,287,590 square kilometres',
'1,173,108,018',
'IN',
'India',
'New Delhi',
'<a href="/places/default/continent/AS">AS</a>',
'.in',
'INR',
'Rupee',
'91',
'######',
'^(\\d{6})$',
'enIN,hi,bn,te,mr,ta,ur,gu,kn,ml,or,pa,as,bh,sat,ks,ne,sd,kok,doi,mni,sit,sa,fr,lus,inc',
'<div>
<a href="/places/default/iso/CN">CN </a>
<a href="/places/default/iso/NP">NP </a>
<a href="/places/default/iso/MM">MM </a>
<a href="/places/default/iso/BT">BT </a>
<a href="/places/default/iso/PK">PK </a>
<a href="/places/default/iso/BD">BD </a>
</div>'
]
Perhatikan bahwa pada keluaran di atas Anda dapat melihat detail tentang negara India dengan menggunakan ekspresi reguler.
Sup yang Indah
Misalkan kita ingin mengumpulkan semua hyperlink dari suatu halaman web, maka kita dapat menggunakan parser bernama BeautifulSoup yang dapat diketahui lebih detail di https://www.crummy.com/software/BeautifulSoup/bs4/doc/.Dengan kata sederhana, BeautifulSoup adalah pustaka Python untuk menarik data dari file HTML dan XML. Ini dapat digunakan dengan permintaan, karena membutuhkan input (dokumen atau url) untuk membuat objek sup karena tidak dapat mengambil halaman web dengan sendirinya. Anda dapat menggunakan skrip Python berikut untuk mengumpulkan judul halaman web dan hyperlink.
Memasang Beautiful Soup
Menggunakan pip perintah, kita dapat menginstal beautifulsoup baik di lingkungan virtual kami atau di instalasi global.
(base) D:\ProgramData>pip install bs4
Collecting bs4
Downloading
https://files.pythonhosted.org/packages/10/ed/7e8b97591f6f456174139ec089c769f89
a94a1a4025fe967691de971f314/bs4-0.0.1.tar.gz
Requirement already satisfied: beautifulsoup4 in d:\programdata\lib\sitepackages
(from bs4) (4.6.0)
Building wheels for collected packages: bs4
Running setup.py bdist_wheel for bs4 ... done
Stored in directory:
C:\Users\gaurav\AppData\Local\pip\Cache\wheels\a0\b0\b2\4f80b9456b87abedbc0bf2d
52235414c3467d8889be38dd472
Successfully built bs4
Installing collected packages: bs4
Successfully installed bs4-0.0.1
Contoh
Perhatikan bahwa dalam contoh ini, kami memperluas contoh di atas yang diimplementasikan dengan modul request python. kami menggunakanr.text untuk membuat objek sup yang selanjutnya akan digunakan untuk mengambil detail seperti judul halaman web.
Pertama, kita perlu mengimpor modul Python yang diperlukan -
import requests
from bs4 import BeautifulSoup
Di baris kode berikut ini kami menggunakan permintaan untuk membuat permintaan HTTP GET untuk url: https://authoraditiagarwal.com/ dengan membuat permintaan GET.
r = requests.get('https://authoraditiagarwal.com/')
Sekarang kita perlu membuat objek Soup sebagai berikut -
soup = BeautifulSoup(r.text, 'lxml')
print (soup.title)
print (soup.title.text)
Keluaran
Output yang sesuai akan ditampilkan di sini -
<title>Learn and Grow with Aditi Agarwal</title>
Learn and Grow with Aditi Agarwal
Lxml
Library Python lain yang akan kita diskusikan untuk web scraping adalah lxml. Ini adalah pustaka parsing HTML dan XML berkinerja tinggi. Ini relatif cepat dan mudah. Anda dapat membacanya lebih lanjut dihttps://lxml.de/.
Menginstal lxml
Dengan menggunakan perintah pip, kita dapat menginstal lxml baik di lingkungan virtual kami atau di instalasi global.
(base) D:\ProgramData>pip install lxml
Collecting lxml
Downloading
https://files.pythonhosted.org/packages/b9/55/bcc78c70e8ba30f51b5495eb0e
3e949aa06e4a2de55b3de53dc9fa9653fa/lxml-4.2.5-cp36-cp36m-win_amd64.whl
(3.
6MB)
100% |¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 3.6MB 64kB/s
Installing collected packages: lxml
Successfully installed lxml-4.2.5
Contoh: Ekstraksi data menggunakan lxml dan request
Dalam contoh berikut, kami mengambil elemen tertentu dari laman web dari authoraditiagarwal.com dengan menggunakan lxml dan request -
Pertama, kita perlu mengimpor permintaan dan html dari pustaka lxml sebagai berikut -
import requests
from lxml import html
Sekarang kita perlu menyediakan url halaman web ke memo
url = 'https://authoraditiagarwal.com/leadershipmanagement/'
Sekarang kita perlu menyediakan jalannya (Xpath) ke elemen tertentu dari halaman web itu -
path = '//*[@id="panel-836-0-0-1"]/div/div/p[1]'
response = requests.get(url)
byte_string = response.content
source_code = html.fromstring(byte_string)
tree = source_code.xpath(path)
print(tree[0].text_content())
Keluaran
Output yang sesuai akan ditampilkan di sini -
The Sprint Burndown or the Iteration Burndown chart is a powerful tool to communicate
daily progress to the stakeholders. It tracks the completion of work for a given sprint
or an iteration. The horizontal axis represents the days within a Sprint. The vertical
axis represents the hours remaining to complete the committed work.
Di bab sebelumnya, kita belajar tentang mengekstraksi data dari halaman web atau web scraping dengan berbagai modul Python. Dalam bab ini, mari kita lihat berbagai teknik untuk memproses data yang telah dikikis.
pengantar
Untuk mengolah data yang telah di-scraping, kita harus menyimpan data di mesin lokal kita dalam format tertentu seperti spreadsheet (CSV), JSON atau terkadang dalam database seperti MySQL.
Pemrosesan Data CSV dan JSON
Pertama, kita akan menulis informasi, setelah mengambil dari halaman web, ke dalam file CSV atau spreadsheet. Mari kita pahami terlebih dahulu melalui contoh sederhana di mana pertama-tama kita akan mengambil informasi menggunakanBeautifulSoup modul, seperti yang dilakukan sebelumnya, dan kemudian dengan menggunakan modul Python CSV kita akan menulis informasi tekstual tersebut ke dalam file CSV.
Pertama, kita perlu mengimpor pustaka Python yang diperlukan sebagai berikut -
import requests
from bs4 import BeautifulSoup
import csv
Di baris kode berikut ini, kami menggunakan permintaan untuk membuat permintaan HTTP GET untuk url: https://authoraditiagarwal.com/ dengan membuat permintaan GET.
r = requests.get('https://authoraditiagarwal.com/')
Sekarang, kita perlu membuat objek Soup sebagai berikut -
soup = BeautifulSoup(r.text, 'lxml')
Sekarang, dengan bantuan baris kode berikutnya, kita akan menulis data yang diambil ke dalam file CSV bernama dataprocessing.csv.
f = csv.writer(open(' dataprocessing.csv ','w'))
f.writerow(['Title'])
f.writerow([soup.title.text])
Setelah menjalankan skrip ini, informasi tekstual atau judul halaman web akan disimpan dalam file CSV yang disebutkan di atas di komputer lokal Anda.
Demikian pula, kami dapat menyimpan informasi yang dikumpulkan dalam file JSON. Berikut ini adalah skrip Python yang mudah dipahami untuk melakukan hal yang sama di mana kami mengambil informasi yang sama seperti yang kami lakukan di skrip Python terakhir, tetapi kali ini informasi yang diambil disimpan di JSONfile.txt dengan menggunakan modul JSON Python.
import requests
from bs4 import BeautifulSoup
import csv
import json
r = requests.get('https://authoraditiagarwal.com/')
soup = BeautifulSoup(r.text, 'lxml')
y = json.dumps(soup.title.text)
with open('JSONFile.txt', 'wt') as outfile:
json.dump(y, outfile)
Setelah menjalankan skrip ini, informasi yang diambil yaitu judul halaman web akan disimpan dalam file teks yang disebutkan di atas pada mesin lokal Anda.
Pemrosesan Data menggunakan AWS S3
Terkadang kami mungkin ingin menyimpan data bekas di penyimpanan lokal kami untuk tujuan arsip. Tetapi bagaimana jika kita perlu menyimpan dan menganalisis data ini dalam skala besar? Jawabannya adalah layanan penyimpanan cloud bernama Amazon S3 atau AWS S3 (Simple Storage Service). Pada dasarnya AWS S3 adalah penyimpanan objek yang dibuat untuk menyimpan dan mengambil sejumlah data dari mana saja.
Kami dapat mengikuti langkah-langkah berikut untuk menyimpan data di AWS S3 -
Step 1- Pertama kita memerlukan akun AWS yang akan memberi kita kunci rahasia untuk digunakan dalam skrip Python kita saat menyimpan data. Ini akan membuat bucket S3 di mana kita dapat menyimpan data kita.
Step 2 - Selanjutnya, kita perlu menginstal boto3Library Python untuk mengakses bucket S3. Itu dapat diinstal dengan bantuan perintah berikut -
pip install boto3
Step 3 - Selanjutnya, kita dapat menggunakan skrip Python berikut untuk mengambil data dari halaman web dan menyimpannya ke bucket AWS S3.
Pertama, kita perlu mengimpor pustaka Python untuk scraping, di sini kita sedang mengerjakan requests, dan boto3 menyimpan data ke bucket S3.
import requests
import boto3
Sekarang kita dapat mengikis data dari URL kita.
data = requests.get("Enter the URL").text
Sekarang untuk menyimpan data ke S3 bucket, kita perlu membuat klien S3 sebagai berikut -
s3 = boto3.client('s3')
bucket_name = "our-content"
Baris kode berikutnya akan membuat S3 bucket sebagai berikut -
s3.create_bucket(Bucket = bucket_name, ACL = 'public-read')
s3.put_object(Bucket = bucket_name, Key = '', Body = data, ACL = "public-read")
Sekarang Anda dapat memeriksa bucket dengan name our-content dari akun AWS Anda.
Pengolahan data menggunakan MySQL
Mari kita pelajari cara memproses data menggunakan MySQL. Jika Anda ingin mempelajari tentang MySQL, Anda dapat mengikuti tautannyahttps://www.tutorialspoint.com/mysql/.
Dengan bantuan langkah-langkah berikut, kita dapat mengikis dan memproses data ke dalam tabel MySQL -
Step 1- Pertama, dengan menggunakan MySQL kita perlu membuat database dan tabel tempat kita ingin menyimpan data bekas kita. Misalnya, kami membuat tabel dengan kueri berikut -
CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT,
title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));
Step 2- Selanjutnya, kita perlu berurusan dengan Unicode. Perhatikan bahwa MySQL tidak menangani Unicode secara default. Kita perlu mengaktifkan fitur ini dengan bantuan perintah berikut yang akan mengubah kumpulan karakter default untuk database, untuk tabel dan untuk kedua kolom -
ALTER DATABASE scrap CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CONVERT TO CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CHANGE title title VARCHAR(200) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE pages CHANGE content content VARCHAR(10000) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
Step 3- Sekarang, integrasikan MySQL dengan Python. Untuk ini, kita membutuhkan PyMySQL yang dapat diinstal dengan bantuan perintah berikut
pip install PyMySQL
Step 4- Sekarang database kita bernama Scrap, yang dibuat sebelumnya, siap untuk menyimpan data, setelah di-scrap dari web, ke dalam tabel bernama Scrap_pages. Di sini, di contoh kita, kita akan mengikis data dari Wikipedia dan itu akan disimpan ke dalam database kita.
Pertama, kita perlu mengimpor modul Python yang diperlukan.
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import pymysql
import re
Sekarang, buat koneksi, yang mengintegrasikan ini dengan Python.
conn = pymysql.connect(host='127.0.0.1',user='root', passwd = None, db = 'mysql',
charset = 'utf8')
cur = conn.cursor()
cur.execute("USE scrap")
random.seed(datetime.datetime.now())
def store(title, content):
cur.execute('INSERT INTO scrap_pages (title, content) VALUES ''("%s","%s")', (title, content))
cur.connection.commit()
Sekarang, hubungkan dengan Wikipedia dan dapatkan data darinya.
def getLinks(articleUrl):
html = urlopen('http://en.wikipedia.org'+articleUrl)
bs = BeautifulSoup(html, 'html.parser')
title = bs.find('h1').get_text()
content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()
store(title, content)
return bs.find('div', {'id':'bodyContent'}).findAll('a',href=re.compile('^(/wiki/)((?!:).)*$'))
links = getLinks('/wiki/Kevin_Bacon')
try:
while len(links) > 0:
newArticle = links[random.randint(0, len(links)-1)].attrs['href']
print(newArticle)
links = getLinks(newArticle)
Terakhir, kita perlu menutup kursor dan koneksi.
finally:
cur.close()
conn.close()
Ini akan menyimpan data yang dikumpulkan dari Wikipedia ke dalam tabel bernama scrap_pages. Jika Anda sudah familiar dengan MySQL dan web scraping, maka kode di atas tidak akan sulit untuk dipahami.
Pengolahan data menggunakan PostgreSQL
PostgreSQL, yang dikembangkan oleh tim relawan di seluruh dunia, adalah sistem Manajemen basis data relasional (RDMS) open source. Proses pengolahan data bekas menggunakan PostgreSQL mirip dengan MySQL. Akan ada dua perubahan: Pertama, perintah akan berbeda dengan MySQL dan kedua, di sini kita akan gunakanpsycopg2 Library Python untuk melakukan integrasinya dengan Python.
Jika Anda tidak terbiasa dengan PostgreSQL maka Anda dapat mempelajarinya di https://www.tutorialspoint.com/postgresql/. Dan dengan bantuan perintah berikut kita dapat menginstal pustaka psycopg2 Python -
pip install psycopg2
Scraping web biasanya melibatkan pengunduhan, penyimpanan, dan pemrosesan konten media web. Dalam bab ini, mari kita pahami cara memproses konten yang diunduh dari web.
pengantar
Konten media web yang kami peroleh selama scraping dapat berupa file gambar, audio dan video, baik berupa non halaman web maupun file data. Tapi, apakah kita dapat mempercayai data yang diunduh terutama pada ekstensi data yang akan kita unduh dan simpan di memori komputer kita? Ini membuatnya penting untuk mengetahui tentang jenis data yang akan kita simpan secara lokal.
Mendapatkan Konten Media dari Halaman Web
Pada bagian ini, kita akan mempelajari bagaimana kita dapat mengunduh konten media yang mewakili jenis media dengan benar berdasarkan informasi dari server web. Kita bisa melakukannya dengan bantuan Pythonrequests modul seperti yang kita lakukan di bab sebelumnya.
Pertama, kita perlu mengimpor modul Python yang diperlukan sebagai berikut -
import requests
Sekarang, berikan URL konten media yang ingin kita unduh dan simpan secara lokal.
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
Gunakan kode berikut untuk membuat objek respons HTTP.
r = requests.get(url)
Dengan bantuan baris kode berikut, kita dapat menyimpan konten yang diterima sebagai file .png.
with open("ThinkBig.png",'wb') as f:
f.write(r.content)
Setelah menjalankan skrip Python di atas, kita akan mendapatkan file bernama ThinkBig.png, yang akan memiliki gambar yang diunduh.
Mengekstrak Nama File dari URL
Setelah mengunduh konten dari situs web, kami juga ingin menyimpannya dalam file dengan nama file yang ditemukan di URL. Tetapi kami juga dapat memeriksa, apakah ada juga sejumlah fragmen tambahan di URL. Untuk ini, kita perlu mencari nama file sebenarnya dari URL.
Dengan bantuan mengikuti skrip Python, menggunakan urlparse, kita dapat mengekstrak nama file dari URL -
import urllib3
import os
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
a = urlparse(url)
a.path
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
'/wp-content/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg'
os.path.basename(a.path)
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
'MetaSlider_ThinkBig-1080x180.jpg'
Setelah Anda menjalankan skrip di atas, kami akan mendapatkan nama file dari URL.
Informasi tentang Jenis Konten dari URL
Saat mengekstrak konten dari server web, dengan permintaan GET, kita juga dapat memeriksa informasinya yang disediakan oleh server web. Dengan bantuan mengikuti skrip Python kita dapat menentukan apa arti server web dengan jenis konten -
Pertama, kita perlu mengimpor modul Python yang diperlukan sebagai berikut -
import requests
Sekarang, kita perlu memberikan URL konten media yang ingin kita unduh dan simpan secara lokal.
url = "https://authoraditiagarwal.com/wpcontent/uploads/2018/05/MetaSlider_ThinkBig-1080x180.jpg"
Baris kode berikut akan membuat objek respons HTTP.
r = requests.get(url, allow_redirects=True)
Sekarang, kita bisa mendapatkan jenis informasi tentang konten yang dapat disediakan oleh server web.
for headers in r.headers: print(headers)
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
Date
Server
Upgrade
Connection
Last-Modified
Accept-Ranges
Content-Length
Keep-Alive
Content-Type
Dengan bantuan baris kode berikut kita bisa mendapatkan informasi tertentu tentang tipe konten, katakanlah tipe konten -
print (r.headers.get('content-type'))
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
image/jpeg
Dengan bantuan baris kode berikut, kita bisa mendapatkan informasi tertentu tentang tipe konten, katakanlah EType -
print (r.headers.get('ETag'))
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
None
Perhatikan perintah berikut -
print (r.headers.get('content-length'))
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
12636
Dengan bantuan baris kode berikut kita bisa mendapatkan informasi tertentu tentang tipe konten, katakanlah Server -
print (r.headers.get('Server'))
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
Apache
Menghasilkan Thumbnail untuk Gambar
Thumbnail adalah deskripsi atau representasi yang sangat kecil. Seorang pengguna mungkin ingin menyimpan hanya thumbnail dari gambar besar atau menyimpan gambar serta thumbnail. Di bagian ini kita akan membuat thumbnail dari gambar bernamaThinkBig.png diunduh di bagian sebelumnya "Mendapatkan konten media dari halaman web".
Untuk skrip Python ini, kita perlu menginstal pustaka Python bernama Pillow, garpu pustaka Gambar Python yang memiliki fungsi berguna untuk memanipulasi gambar. Itu dapat diinstal dengan bantuan perintah berikut -
pip install pillow
Skrip Python berikut akan membuat thumbnail dari gambar dan akan menyimpannya ke direktori saat ini dengan mengawali file thumbnail dengan Th_
import glob
from PIL import Image
for infile in glob.glob("ThinkBig.png"):
img = Image.open(infile)
img.thumbnail((128, 128), Image.ANTIALIAS)
if infile[0:2] != "Th_":
img.save("Th_" + infile, "png")
Kode di atas sangat mudah dipahami dan Anda dapat memeriksa file thumbnail di direktori saat ini.
Tangkapan layar dari Situs Web
Dalam web scraping, tugas yang paling umum adalah mengambil screenshot dari sebuah situs web. Untuk mengimplementasikan ini, kita akan menggunakan selenium dan webdriver. Skrip Python berikut akan mengambil tangkapan layar dari situs web dan akan menyimpannya ke direktori saat ini.
From selenium import webdriver
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
browser = webdriver.Chrome(executable_path = path)
browser.get('https://tutorialspoint.com/')
screenshot = browser.save_screenshot('screenshot.png')
browser.quit
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
DevTools listening on ws://127.0.0.1:1456/devtools/browser/488ed704-9f1b-44f0-
a571-892dc4c90eb7
<bound method WebDriver.quit of <selenium.webdriver.chrome.webdriver.WebDriver
(session="37e8e440e2f7807ef41ca7aa20ce7c97")>>
Setelah menjalankan skrip, Anda dapat memeriksa direktori Anda saat ini screenshot.png mengajukan.
Pembuatan Thumbnail untuk Video
Misalkan kita telah mengunduh video dari situs web dan ingin membuat thumbnail untuknya sehingga video tertentu, berdasarkan thumbnail-nya, dapat diklik. Untuk menghasilkan thumbnail untuk video kita membutuhkan alat sederhana bernamaffmpeg yang dapat diunduh dari www.ffmpeg.org. Setelah mengunduh, kita perlu menginstalnya sesuai spesifikasi OS kita.
Skrip Python berikut akan menghasilkan thumbnail video dan akan menyimpannya ke direktori lokal kita -
import subprocess
video_MP4_file = “C:\Users\gaurav\desktop\solar.mp4
thumbnail_image_file = 'thumbnail_solar_video.jpg'
subprocess.call(['ffmpeg', '-i', video_MP4_file, '-ss', '00:00:20.000', '-
vframes', '1', thumbnail_image_file, "-y"])
Setelah menjalankan skrip di atas, kita akan mendapatkan thumbnail bernama thumbnail_solar_video.jpg disimpan di direktori lokal kami.
Merobek video MP4 menjadi MP3
Misalkan Anda telah mengunduh beberapa file video dari sebuah situs web, tetapi Anda hanya membutuhkan audio dari file itu untuk memenuhi tujuan Anda, maka itu dapat dilakukan dengan Python dengan bantuan pustaka Python yang disebut moviepy yang dapat diinstal dengan bantuan perintah berikut -
pip install moviepy
Nah, setelah berhasil menginstal moviepy dengan bantuan script berikut kita bisa convert dan MP4 ke MP3.
import moviepy.editor as mp
clip = mp.VideoFileClip(r"C:\Users\gaurav\Desktop\1234.mp4")
clip.audio.write_audiofile("movie_audio.mp3")
Anda dapat mengamati hasilnya seperti yang ditunjukkan di bawah ini -
[MoviePy] Writing audio in movie_audio.mp3
100%|¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦
¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦¦| 674/674 [00:01<00:00,
476.30it/s]
[MoviePy] Done.
Skrip di atas akan menyimpan file audio MP3 di direktori lokal.
Pada bab sebelumnya, kita telah melihat bagaimana menangani video dan gambar yang kita peroleh sebagai bagian dari konten web scraping. Dalam bab ini kita akan membahas analisis teks dengan menggunakan pustaka Python dan akan mempelajarinya secara mendetail.
pengantar
Anda dapat melakukan analisis teks dengan menggunakan pustaka Python yang disebut Natural Language Tool Kit (NLTK). Sebelum melanjutkan ke konsep NLTK, mari kita pahami hubungan antara analisis teks dan web scraping.
Menganalisis kata-kata dalam teks dapat mengarahkan kita untuk mengetahui kata-kata mana yang penting, kata-kata mana yang tidak biasa, bagaimana kata-kata dikelompokkan. Analisis ini memudahkan tugas pengikisan web.
Memulai dengan NLTK
Perangkat bahasa Alami (NLTK) adalah kumpulan pustaka Python yang dirancang khusus untuk mengidentifikasi dan menandai bagian-bagian ucapan yang ditemukan dalam teks bahasa alami seperti bahasa Inggris.
Menginstal NLTK
Anda dapat menggunakan perintah berikut untuk menginstal NLTK dengan Python -
pip install nltk
Jika Anda menggunakan Anaconda, maka paket conda untuk NLTK dapat dibuat dengan menggunakan perintah berikut -
conda install -c anaconda nltk
Mendownload Data NLTK
Setelah menginstal NLTK, kita harus mendownload repositori teks preset. Tetapi sebelum mengunduh repositori preset teks, kita perlu mengimpor NLTK dengan bantuanimport perintah sebagai berikut -
mport nltk
Sekarang, dengan bantuan perintah berikut, data NLTK dapat diunduh -
nltk.download()
Instalasi semua paket NLTK yang tersedia akan memakan waktu, tetapi selalu disarankan untuk menginstal semua paket.
Menginstal paket lain yang diperlukan
Kami juga membutuhkan beberapa paket Python lainnya seperti gensim dan pattern untuk melakukan analisis teks serta membangun aplikasi pemrosesan bahasa alami dengan menggunakan NLTK.
gensim- Pustaka pemodelan semantik yang kuat yang berguna untuk banyak aplikasi. Itu dapat diinstal dengan perintah berikut -
pip install gensim
pattern - Dulu buat gensimpaket bekerja dengan baik. Itu dapat diinstal dengan perintah berikut -
pip install pattern
Tokenisasi
Proses pemecahan teks yang diberikan, menjadi unit-unit yang lebih kecil yang disebut token, disebut tokenisasi. Token ini bisa berupa kata, angka, atau tanda baca. Itu juga disebutword segmentation.
Contoh
Modul NLTK menyediakan paket yang berbeda untuk tokenisasi. Kami dapat menggunakan paket ini sesuai kebutuhan kami. Beberapa paket dijelaskan di sini -
sent_tokenize package- Paket ini akan membagi teks masukan menjadi beberapa kalimat. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import sent_tokenize
word_tokenize package- Paket ini akan membagi teks masukan menjadi kata-kata. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import word_tokenize
WordPunctTokenizer package- Paket ini akan membagi teks masukan serta tanda baca menjadi kata-kata. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.tokenize import WordPuncttokenizer
Stemming
Dalam bahasa apa pun, ada berbagai bentuk kata. Suatu bahasa memiliki banyak variasi karena alasan tata bahasa. Misalnya, perhatikan kata-katanyademocracy, democratic, dan democratization. Untuk pembelajaran mesin serta untuk proyek web scraping, penting bagi mesin untuk memahami bahwa kata-kata yang berbeda ini memiliki bentuk dasar yang sama. Oleh karena itu kita dapat mengatakan bahwa mengekstrak bentuk dasar kata-kata sambil menganalisis teks dapat bermanfaat.
Hal ini dapat dicapai dengan stemming yang dapat didefinisikan sebagai proses heuristik penggalian bentuk dasar kata dengan memotong ujung kata.
Modul NLTK menyediakan paket berbeda untuk stemming. Kami dapat menggunakan paket ini sesuai kebutuhan kami. Beberapa dari paket ini dijelaskan di sini -
PorterStemmer package- Algoritma Porter digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.porter import PorterStemmer
Misalnya, setelah memberi kata ‘writing’ sebagai masukan untuk stemmer ini, keluarannya adalah kata ‘write’ setelah membendung.
LancasterStemmer package- Algoritma Lancaster digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.lancaster import LancasterStemmer
Misalnya, setelah memberi kata ‘writing’ sebagai masukan untuk stemmer ini maka keluarannya adalah kata ‘writ’ setelah membendung.
SnowballStemmer package- Algoritma Snowball digunakan oleh paket stemming Python ini untuk mengekstrak bentuk dasarnya. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem.snowball import SnowballStemmer
Misal, setelah memasukkan kata 'writing' sebagai input pada stemmer ini maka outputnya adalah kata 'write' setelah stemming.
Lemmatisasi
Cara lain untuk mengekstrak bentuk dasar kata adalah dengan lemmatisasi, biasanya bertujuan untuk menghilangkan akhiran infleksional dengan menggunakan kosa kata dan analisis morfologi. Bentuk dasar kata apa pun setelah lemmatisasi disebut lemma.
Modul NLTK menyediakan paket berikut untuk lemmatisasi -
WordNetLemmatizer package- Ini akan mengekstrak bentuk dasar kata tergantung pada apakah itu digunakan sebagai kata benda sebagai kata kerja. Anda dapat menggunakan perintah berikut untuk mengimpor paket ini -
from nltk.stem import WordNetLemmatizer
Memotong
Chunking, yang berarti membagi data menjadi potongan-potongan kecil, adalah salah satu proses penting dalam pemrosesan bahasa alami untuk mengidentifikasi bagian-bagian ucapan dan frasa pendek seperti frasa kata benda. Chunking adalah melakukan pelabelan token. Kita bisa mendapatkan struktur kalimat dengan bantuan proses chunking.
Contoh
Dalam contoh ini, kita akan mengimplementasikan Noun-Phrase chunking dengan menggunakan modul NLTK Python. NP chunking adalah kategori chunking yang akan mencari potongan frase kata benda dalam kalimat.
Langkah-langkah untuk menerapkan pemotongan frase kata benda
Kita perlu mengikuti langkah-langkah yang diberikan di bawah ini untuk menerapkan penggabungan frase kata benda -
Langkah 1 - Definisi tata bahasa potongan
Pada langkah pertama kita akan mendefinisikan tata bahasa untuk chunking. Itu akan terdiri dari aturan-aturan yang harus kita ikuti.
Langkah 2 - Pembuatan parser potongan
Sekarang, kita akan membuat pengurai potongan. Ini akan mengurai tata bahasa dan memberikan hasilnya.
Langkah 3 - Output
Pada langkah terakhir ini, keluaran akan dihasilkan dalam format pohon.
Pertama, kita perlu mengimpor paket NLTK sebagai berikut -
import nltk
Selanjutnya, kita perlu mendefinisikan kalimatnya. Di sini DT: determinan, VBP: kata kerja, JJ: kata sifat, IN: preposisi dan NN: kata benda.
sentence = [("a", "DT"),("clever","JJ"),("fox","NN"),("was","VBP"),("jumping","VBP"),("over","IN"),("the","DT"),("wall","NN")]
Selanjutnya kita berikan tata bahasa dalam bentuk regular expression.
grammar = "NP:{<DT>?<JJ>*<NN>}"
Sekarang, baris kode berikutnya akan menentukan parser untuk mengurai tata bahasa.
parser_chunking = nltk.RegexpParser(grammar)
Sekarang, parser akan mengurai kalimat tersebut.
parser_chunking.parse(sentence)
Selanjutnya, kami memberikan output kami dalam variabel.
Output = parser_chunking.parse(sentence)
Dengan bantuan kode berikut, kita dapat menggambar keluaran kita dalam bentuk pohon seperti gambar di bawah ini.
output.draw()
Model Bag of Word (BoW) Mengekstrak dan mengubah Teks menjadi Bentuk Numerik
Bag of Word (BoW), model yang berguna dalam pemrosesan bahasa alami, pada dasarnya digunakan untuk mengekstrak fitur dari teks. Setelah mengekstraksi fitur dari teks, maka dapat digunakan dalam pemodelan dalam algoritma pembelajaran mesin karena data mentah tidak dapat digunakan dalam aplikasi ML.
Pengerjaan Model BoW
Awalnya, model mengekstrak kosakata dari semua kata dalam dokumen. Nantinya, dengan menggunakan matriks term dokumen, akan dibangun sebuah model. Dengan cara ini, model BoW merepresentasikan dokumen sebagai sekumpulan kata saja dan urutan atau strukturnya dibuang.
Contoh
Misalkan kita memiliki dua kalimat berikut -
Sentence1 - Ini adalah contoh model Bag of Words.
Sentence2 - Kami dapat mengekstrak fitur dengan menggunakan model Bag of Words.
Sekarang, dengan mempertimbangkan dua kalimat ini, kita memiliki 14 kata berbeda berikut -
- This
- is
- an
- example
- bag
- of
- words
- model
- we
- can
- extract
- features
- by
- using
Membangun Model Bag of Words di NLTK
Mari kita lihat skrip Python berikut yang akan membangun model BoW di NLTK.
Pertama, impor paket berikut -
from sklearn.feature_extraction.text import CountVectorizer
Selanjutnya, tentukan kumpulan kalimat -
Sentences=['This is an example of Bag of Words model.', ' We can extract
features by using Bag of Words model.']
vector_count = CountVectorizer()
features_text = vector_count.fit_transform(Sentences).todense()
print(vector_count.vocabulary_)
Keluaran
Ini menunjukkan bahwa kita memiliki 14 kata berbeda dalam dua kalimat di atas -
{
'this': 10, 'is': 7, 'an': 0, 'example': 4, 'of': 9,
'bag': 1, 'words': 13, 'model': 8, 'we': 12, 'can': 3,
'extract': 5, 'features': 6, 'by': 2, 'using':11
}
Pemodelan Topik: Mengidentifikasi Pola dalam Data Teks
Umumnya dokumen dikelompokkan menjadi topik dan pemodelan topik adalah teknik untuk mengidentifikasi pola dalam teks yang sesuai dengan topik tertentu. Dengan kata lain, pemodelan topik digunakan untuk mengungkap tema abstrak atau struktur tersembunyi dalam kumpulan dokumen tertentu.
Anda dapat menggunakan pemodelan topik dalam skenario berikut -
Klasifikasi Teks
Klasifikasi dapat ditingkatkan dengan pemodelan topik karena ini mengelompokkan kata-kata yang mirip secara bersamaan daripada menggunakan setiap kata secara terpisah sebagai fitur.
Sistem Pemberi Rekomendasi
Kami dapat membangun sistem pemberi rekomendasi dengan menggunakan ukuran kesamaan.
Algoritma Pemodelan Topik
Kita dapat mengimplementasikan pemodelan topik dengan menggunakan algoritma berikut -
Latent Dirichlet Allocation(LDA) - Ini adalah salah satu algoritma paling populer yang menggunakan model grafis probabilistik untuk mengimplementasikan pemodelan topik.
Latent Semantic Analysis(LDA) or Latent Semantic Indexing(LSI) - Didasarkan pada Aljabar Linear dan menggunakan konsep SVD (Singular Value Decomposition) pada matriks term dokumen.
Non-Negative Matrix Factorization (NMF) - Ini juga didasarkan pada Aljabar Linear seperti LDA.
Algoritma yang disebutkan di atas akan memiliki elemen-elemen berikut -
- Jumlah topik: Parameter
- Matriks Kata-Dokumen: Masukan
- WTM (Word Topic Matrix) & TDM (Topic Document Matrix): Output
pengantar
Scraping web adalah tugas yang kompleks dan kompleksitas berlipat ganda jika situs web dinamis. Menurut Audit Global PBB atas Aksesibilitas Web, lebih dari 70% situs web bersifat dinamis dan mereka mengandalkan JavaScript untuk fungsinya.
Contoh Situs Web Dinamis
Mari kita lihat contoh situs web dinamis dan ketahui mengapa sulit untuk dikikis. Di sini kita akan mengambil contoh pencarian dari situs web bernamahttp://example.webscraping.com/places/default/search.Tetapi bagaimana kita dapat mengatakan bahwa situs web ini bersifat dinamis? Itu dapat dinilai dari keluaran skrip Python berikut yang akan mencoba mengikis data dari halaman web yang disebutkan di atas -
import re
import urllib.request
response = urllib.request.urlopen('http://example.webscraping.com/places/default/search')
html = response.read()
text = html.decode()
re.findall('(.*?)',text)
Keluaran
[ ]
Keluaran di atas menunjukkan bahwa scraper contoh gagal mengekstrak informasi karena elemen <div> yang kami coba temukan kosong.
Pendekatan untuk Mengikis data dari Situs Web Dinamis
Kita telah melihat bahwa pengikis tidak dapat mengikis informasi dari situs web dinamis karena data dimuat secara dinamis dengan JavaScript. Dalam kasus seperti itu, kita dapat menggunakan dua teknik berikut untuk mengambil data dari situs web yang bergantung pada JavaScript dinamis -
- Rekayasa Balik JavaScript
- Merender JavaScript
Rekayasa Balik JavaScript
Proses yang disebut rekayasa balik akan berguna dan memungkinkan kita memahami bagaimana data dimuat secara dinamis oleh halaman web.
Untuk melakukan ini, kita perlu mengklik inspect elementtab untuk URL tertentu. Selanjutnya kita akan klikNETWORK tab untuk menemukan semua permintaan yang dibuat untuk halaman web itu termasuk search.json dengan jalur /ajax. Alih-alih mengakses data AJAX dari browser atau melalui tab JARINGAN, kita dapat melakukannya dengan bantuan mengikuti skrip Python juga -
import requests
url=requests.get('http://example.webscraping.com/ajax/search.json?page=0&page_size=10&search_term=a')
url.json()
Contoh
Skrip di atas memungkinkan kita untuk mengakses respon JSON dengan menggunakan metode Python json. Demikian pula kita dapat mengunduh respons string mentah dan dengan menggunakan metode json.loads python, kita dapat memuatnya juga. Kami melakukan ini dengan bantuan mengikuti skrip Python. Ini pada dasarnya akan mengikis semua negara dengan mencari huruf alfabet 'a' dan kemudian mengulang halaman yang dihasilkan dari tanggapan JSON.
import requests
import string
PAGE_SIZE = 15
url = 'http://example.webscraping.com/ajax/' + 'search.json?page={}&page_size={}&search_term=a'
countries = set()
for letter in string.ascii_lowercase:
print('Searching with %s' % letter)
page = 0
while True:
response = requests.get(url.format(page, PAGE_SIZE, letter))
data = response.json()
print('adding %d records from the page %d' %(len(data.get('records')),page))
for record in data.get('records'):countries.add(record['country'])
page += 1
if page >= data['num_pages']:
break
with open('countries.txt', 'w') as countries_file:
countries_file.write('n'.join(sorted(countries)))
Setelah menjalankan skrip di atas, kita akan mendapatkan output berikut dan catatan akan disimpan dalam file bernama countries.txt.
Keluaran
Searching with a
adding 15 records from the page 0
adding 15 records from the page 1
...
Merender JavaScript
Di bagian sebelumnya, kami melakukan rekayasa balik pada halaman web bahwa cara kerja API dan bagaimana kami dapat menggunakannya untuk mengambil hasil dalam satu permintaan. Namun, kami dapat menghadapi kesulitan berikut saat melakukan rekayasa balik -
Terkadang situs web bisa sangat sulit. Misalnya, jika situs web dibuat dengan alat peramban canggih seperti Google Web Toolkit (GWT), maka kode JS yang dihasilkan akan dibuat oleh mesin dan sulit untuk dipahami dan direkayasa balik.
Beberapa kerangka kerja tingkat yang lebih tinggi seperti React.js dapat mempersulit rekayasa balik dengan mengabstraksi logika JavaScript yang sudah kompleks.
Solusi untuk kesulitan di atas adalah dengan menggunakan mesin rendering browser yang mengurai HTML, menerapkan pemformatan CSS, dan mengeksekusi JavaScript untuk menampilkan halaman web.
Contoh
Dalam contoh ini, untuk merender Java Script kita akan menggunakan modul Python Selenium yang sudah dikenal. Kode Python berikut akan membuat halaman web dengan bantuan Selenium -
Pertama, kita perlu mengimpor webdriver dari selenium sebagai berikut -
from selenium import webdriver
Sekarang, berikan jalur driver web yang telah kami unduh sesuai kebutuhan kami -
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
driver = webdriver.Chrome(executable_path = path)
Sekarang, sediakan url yang ingin kita buka di browser web yang sekarang dikontrol oleh skrip Python kita.
driver.get('http://example.webscraping.com/search')
Sekarang, kita dapat menggunakan ID dari kotak alat pencarian untuk mengatur elemen yang akan dipilih.
driver.find_element_by_id('search_term').send_keys('.')
Selanjutnya, kita dapat menggunakan java script untuk mengatur konten kotak pilih sebagai berikut -
js = "document.getElementById('page_size').options[1].text = '100';"
driver.execute_script(js)
Baris kode berikut menunjukkan bahwa pencarian siap untuk diklik di halaman web -
driver.find_element_by_id('search').click()
Baris kode berikutnya menunjukkan bahwa ia akan menunggu selama 45 detik untuk menyelesaikan permintaan AJAX.
driver.implicitly_wait(45)
Sekarang, untuk memilih tautan negara, kita dapat menggunakan pemilih CSS sebagai berikut -
links = driver.find_elements_by_css_selector('#results a')
Sekarang teks dari setiap tautan dapat diekstraksi untuk membuat daftar negara -
countries = [link.text for link in links]
print(countries)
driver.close()
Pada bab sebelumnya, kita telah melihat mengorek situs web dinamis. Dalam bab ini, mari kita pahami scraping situs web yang bekerja pada input berbasis pengguna, yaitu situs web berbasis formulir.
pengantar
Saat ini WWW (World Wide Web) bergerak menuju media sosial serta konten yang dihasilkan. Jadi muncul pertanyaan bagaimana kita dapat mengakses informasi semacam itu yang berada di luar layar login? Untuk ini kita perlu berurusan dengan formulir dan login.
Pada bab sebelumnya, kami bekerja dengan metode HTTP GET untuk meminta informasi tetapi dalam bab ini kami akan bekerja dengan metode HTTP POST yang mendorong informasi ke server web untuk penyimpanan dan analisis.
Berinteraksi dengan formulir Login
Saat bekerja di Internet, Anda pasti sering berinteraksi dengan formulir login. Mereka mungkin sangat sederhana seperti hanya memasukkan beberapa bidang HTML, tombol kirim dan halaman tindakan atau mereka mungkin rumit dan memiliki beberapa bidang tambahan seperti email, tinggalkan pesan bersama dengan captcha untuk alasan keamanan.
Di bagian ini, kita akan membahas formulir kirim sederhana dengan bantuan pustaka permintaan Python.
Pertama, kita perlu mengimpor pustaka permintaan sebagai berikut -
import requests
Sekarang, kami perlu memberikan informasi untuk bidang formulir login.
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
Di baris kode berikutnya, kita perlu memberikan URL tempat aksi formulir akan terjadi.
r = requests.post(“enter the URL”, data = parameters)
print(r.text)
Setelah menjalankan skrip, itu akan mengembalikan konten halaman tempat tindakan telah terjadi.
Misalkan jika Anda ingin mengirimkan gambar dengan formulir, maka sangat mudah dengan requests.post (). Anda dapat memahaminya dengan bantuan mengikuti skrip Python -
import requests
file = {‘Uploadfile’: open(’C:\Usres\desktop\123.png’,‘rb’)}
r = requests.post(“enter the URL”, files = file)
print(r.text)
Memuat Cookie dari Server Web
Cookie, terkadang disebut cookie web atau cookie internet, adalah sepotong kecil data yang dikirim dari situs web dan komputer kami menyimpannya dalam file yang terletak di dalam browser web kami.
Dalam konteks berurusan dengan formulir login, cookie dapat terdiri dari dua jenis. Pertama, kita telah membahas bagian sebelumnya, yang memungkinkan kita untuk mengirimkan informasi ke situs web dan yang kedua yang memungkinkan kita untuk tetap dalam status "masuk" permanen selama kunjungan kita ke situs web. Untuk jenis formulir kedua, situs web menggunakan cookie untuk melacak siapa yang masuk dan siapa yang tidak.
Apa yang dilakukan cookie?
Saat ini sebagian besar situs web menggunakan cookie untuk pelacakan. Kami dapat memahami cara kerja cookie dengan bantuan langkah-langkah berikut -
Step 1- Pertama, situs akan mengotentikasi kredensial login kami dan menyimpannya di cookie browser kami. Cookie ini biasanya berisi informasi toke, waktu habis, dan pelacakan yang dibuat server.
Step 2- Selanjutnya, situs web akan menggunakan cookie sebagai bukti otentikasi. Otentikasi ini selalu ditampilkan setiap kali kami mengunjungi situs web.
Cookie sangat bermasalah untuk pencakar web karena jika pencakar web tidak melacak cookie, formulir yang dikirimkan akan dikirim kembali dan di halaman berikutnya tampaknya mereka tidak pernah masuk. Sangat mudah untuk melacak cookie dengan bantuan Python requests perpustakaan, seperti yang ditunjukkan di bawah ini -
import requests
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = requests.post(“enter the URL”, data = parameters)
Pada baris kode di atas, URL akan menjadi halaman yang akan bertindak sebagai pemroses formulir login.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Setelah menjalankan skrip di atas, kami akan mengambil cookie dari hasil permintaan terakhir.
Ada masalah lain dengan cookie yang terkadang situs web sering memodifikasi cookie tanpa peringatan. Situasi seperti itu dapat diatasirequests.Session() sebagai berikut -
import requests
session = requests.Session()
parameters = {‘Name’:’Enter your name’, ‘Email-id’:’Your Emailid’,’Message’:’Type your message here’}
r = session.post(“enter the URL”, data = parameters)
Pada baris kode di atas, URL akan menjadi halaman yang akan bertindak sebagai pemroses formulir login.
print(‘The cookie is:’)
print(r.cookies.get_dict())
print(r.text)
Perhatikan bahwa Anda dapat dengan mudah memahami perbedaan antara skrip dengan sesi dan tanpa sesi.
Mengotomatiskan formulir dengan Python
Di bagian ini kita akan membahas modul Python bernama Mekanisasi yang akan mengurangi pekerjaan kita dan mengotomatiskan proses pengisian formulir.
Modul mekanik
Modul Mekanisasi memberi kita antarmuka tingkat tinggi untuk berinteraksi dengan formulir. Sebelum mulai menggunakannya kita perlu menginstalnya dengan perintah berikut -
pip install mechanize
Perhatikan bahwa ini hanya akan bekerja di Python 2.x.
Contoh
Dalam contoh ini, kami akan mengotomatiskan proses pengisian formulir login yang memiliki dua bidang yaitu email dan kata sandi -
import mechanize
brwsr = mechanize.Browser()
brwsr.open(Enter the URL of login)
brwsr.select_form(nr = 0)
brwsr['email'] = ‘Enter email’
brwsr['password'] = ‘Enter password’
response = brwsr.submit()
brwsr.submit()
Kode diatas sangat mudah dimengerti. Pertama, kami mengimpor modul mekanisasi. Kemudian objek browser Mekaniskan telah dibuat. Kemudian, kami menavigasi ke URL login dan memilih formulir. Setelah itu, nama dan nilai diteruskan langsung ke objek browser.
Dalam bab ini, mari kita memahami cara melakukan web scraping dan memproses CAPTCHA yang digunakan untuk menguji manusia atau robot pada pengguna.
Apa itu CAPTCHA?
Bentuk lengkap CAPTCHA adalah Completely Automated Public Turing test to tell Computers and Humans Apart, yang dengan jelas menyarankan bahwa ini adalah tes untuk menentukan apakah pengguna itu manusia atau bukan.
CAPTCHA adalah gambar terdistorsi yang biasanya tidak mudah dideteksi oleh program komputer, tetapi manusia dapat memahaminya dengan cara apa pun. Sebagian besar situs web menggunakan CAPTCHA untuk mencegah bot berinteraksi.
Memuat CAPTCHA dengan Python
Misalkan kita ingin melakukan registrasi di website dan ada form dengan CAPTCHA, maka sebelum loading gambar CAPTCHA kita perlu mengetahui informasi spesifik yang dibutuhkan oleh form tersebut. Dengan bantuan script Python selanjutnya kita dapat memahami persyaratan formulir formulir pendaftaran di situs bernamahttp://example.webscrapping.com.
import lxml.html
import urllib.request as urllib2
import pprint
import http.cookiejar as cookielib
def form_parsing(html):
tree = lxml.html.fromstring(html)
data = {}
for e in tree.cssselect('form input'):
if e.get('name'):
data[e.get('name')] = e.get('value')
return data
REGISTER_URL = '<a target="_blank" rel="nofollow"
href="http://example.webscraping.com/user/register">http://example.webscraping.com/user/register'</a>
ckj = cookielib.CookieJar()
browser = urllib2.build_opener(urllib2.HTTPCookieProcessor(ckj))
html = browser.open(
'<a target="_blank" rel="nofollow"
href="http://example.webscraping.com/places/default/user/register?_next">
http://example.webscraping.com/places/default/user/register?_next</a> = /places/default/index'
).read()
form = form_parsing(html)
pprint.pprint(form)
Pada skrip Python di atas, pertama kita mendefinisikan fungsi yang akan mengurai formulir dengan menggunakan modul python lxml dan kemudian akan mencetak persyaratan formulir sebagai berikut -
{
'_formkey': '5e306d73-5774-4146-a94e-3541f22c95ab',
'_formname': 'register',
'_next': '/places/default/index',
'email': '',
'first_name': '',
'last_name': '',
'password': '',
'password_two': '',
'recaptcha_response_field': None
}
Anda dapat memeriksa dari output di atas bahwa semua informasi kecuali recpatcha_response_fielddapat dimengerti dan terus terang. Sekarang pertanyaan yang muncul adalah bagaimana kita dapat menangani informasi yang kompleks ini dan mengunduh CAPTCHA. Ini dapat dilakukan dengan bantuan pustaka Python bantal sebagai berikut;
Paket Bantal Python
Pillow adalah garpu dari pustaka Gambar Python yang memiliki fungsi yang berguna untuk memanipulasi gambar. Itu dapat diinstal dengan bantuan perintah berikut -
pip install pillow
Pada contoh selanjutnya kita akan menggunakannya untuk memuat CAPTCHA -
from io import BytesIO
import lxml.html
from PIL import Image
def load_captcha(html):
tree = lxml.html.fromstring(html)
img_data = tree.cssselect('div#recaptcha img')[0].get('src')
img_data = img_data.partition(',')[-1]
binary_img_data = img_data.decode('base64')
file_like = BytesIO(binary_img_data)
img = Image.open(file_like)
return img
Skrip python di atas menggunakan pillowpython dan mendefinisikan fungsi untuk memuat gambar CAPTCHA. Ini harus digunakan dengan fungsi bernamaform_parser()yang didefinisikan dalam skrip sebelumnya untuk mendapatkan informasi tentang formulir pendaftaran. Skrip ini akan menyimpan gambar CAPTCHA dalam format yang berguna yang selanjutnya dapat diekstraksi sebagai string.
OCR: Mengekstrak Teks dari Gambar menggunakan Python
Setelah memuat CAPTCHA dalam format yang berguna, kita dapat mengekstraknya dengan bantuan Optical Character Recognition (OCR), proses mengekstrak teks dari gambar. Untuk tujuan ini, kami akan menggunakan mesin OCR Tesseract open source. Itu dapat diinstal dengan bantuan perintah berikut -
pip install pytesseract
Contoh
Di sini kita akan memperluas skrip Python di atas, yang memuat CAPTCHA dengan menggunakan Pillow Python Package, sebagai berikut -
import pytesseract
img = get_captcha(html)
img.save('captcha_original.png')
gray = img.convert('L')
gray.save('captcha_gray.png')
bw = gray.point(lambda x: 0 if x < 1 else 255, '1')
bw.save('captcha_thresholded.png')
Skrip Python di atas akan membaca CAPTCHA dalam mode hitam dan putih yang jelas dan mudah diteruskan ke tesseract sebagai berikut -
pytesseract.image_to_string(bw)
Setelah menjalankan skrip di atas kita akan mendapatkan CAPTCHA formulir pendaftaran sebagai output.
Bab ini menjelaskan cara melakukan pengujian menggunakan web scraper dengan Python.
pengantar
Dalam proyek web besar, pengujian otomatis backend situs web dilakukan secara teratur tetapi pengujian frontend sering dilewati. Alasan utama di balik ini adalah bahwa pemrograman situs web seperti jaring berbagai markup dan bahasa pemrograman. Kita bisa menulis unit test untuk satu bahasa tetapi menjadi tantangan jika interaksi dilakukan dalam bahasa lain. Itulah mengapa kita harus memiliki serangkaian pengujian untuk memastikan bahwa kode kita bekerja sesuai harapan kita.
Menguji menggunakan Python
Ketika kita berbicara tentang pengujian, itu berarti pengujian unit. Sebelum mendalami pengujian dengan Python, kita harus tahu tentang pengujian unit. Berikut adalah beberapa karakteristik pengujian unit -
Setidaknya satu aspek dari fungsionalitas komponen akan diuji di setiap pengujian unit.
Setiap pengujian unit bersifat independen dan juga dapat dijalankan secara independen.
Tes unit tidak mengganggu keberhasilan atau kegagalan tes lainnya.
Pengujian unit dapat dijalankan dalam urutan apa pun dan harus berisi setidaknya satu pernyataan.
Unittest - Modul Python
Modul Python bernama Unittest untuk pengujian unit dilengkapi dengan semua instalasi Python standar. Kita hanya perlu mengimpornya dan sisanya adalah tugas kelas unittest.TestCase yang akan melakukan hal berikut -
Fungsi SetUp dan tearDown disediakan oleh kelas unittest.TestCase. Fungsi-fungsi ini dapat berjalan sebelum dan sesudah setiap pengujian unit.
Ini juga menyediakan pernyataan assert untuk memungkinkan pengujian lulus atau gagal.
Ini menjalankan semua fungsi yang dimulai dengan test_ as unit test.
Contoh
Dalam contoh ini kita akan menggabungkan web scraping dengan unittest. Kami akan menguji halaman Wikipedia untuk mencari string 'Python'. Ini pada dasarnya akan melakukan dua tes, pertama cuaca halaman judul sama dengan string pencarian yaitu 'Python' atau tidak dan tes kedua memastikan bahwa halaman tersebut memiliki div konten.
Pertama, kami akan mengimpor modul Python yang diperlukan. Kami menggunakan BeautifulSoup untuk web scraping dan tentu saja unittest untuk pengujian.
from urllib.request import urlopen
from bs4 import BeautifulSoup
import unittest
Sekarang kita perlu mendefinisikan kelas yang akan memperluas unittest.TestCase. Objek global bs akan dibagi di antara semua pengujian. Fungsi setUpClass yang ditentukan dan tidak terkecuali akan menyelesaikannya. Di sini kita akan mendefinisikan dua fungsi, satu untuk menguji halaman judul dan lainnya untuk menguji konten halaman.
class Test(unittest.TestCase):
bs = None
def setUpClass():
url = '<a target="_blank" rel="nofollow" href="https://en.wikipedia.org/wiki/Python">https://en.wikipedia.org/wiki/Python'</a>
Test.bs = BeautifulSoup(urlopen(url), 'html.parser')
def test_titleText(self):
pageTitle = Test.bs.find('h1').get_text()
self.assertEqual('Python', pageTitle);
def test_contentExists(self):
content = Test.bs.find('div',{'id':'mw-content-text'})
self.assertIsNotNone(content)
if __name__ == '__main__':
unittest.main()
Setelah menjalankan skrip di atas kita akan mendapatkan output berikut -
----------------------------------------------------------------------
Ran 2 tests in 2.773s
OK
An exception has occurred, use %tb to see the full traceback.
SystemExit: False
D:\ProgramData\lib\site-packages\IPython\core\interactiveshell.py:2870:
UserWarning: To exit: use 'exit', 'quit', or Ctrl-D.
warn("To exit: use 'exit', 'quit', or Ctrl-D.", stacklevel=1)
Menguji dengan Selenium
Mari kita bahas bagaimana menggunakan Python Selenium untuk pengujian. Ini juga disebut pengujian Selenium. Keduanya Pythonunittest dan Seleniumtidak memiliki banyak kesamaan. Kita tahu bahwa Selenium mengirimkan perintah Python standar ke browser yang berbeda, meskipun ada variasi dalam desain browser mereka. Ingatlah bahwa kami telah menginstal dan bekerja dengan Selenium di bab-bab sebelumnya. Di sini kita akan membuat skrip uji coba di Selenium dan menggunakannya untuk otomatisasi.
Contoh
Dengan bantuan skrip Python berikutnya, kami membuat skrip uji untuk otomatisasi halaman Login Facebook. Anda dapat mengubah contoh untuk mengotomatiskan formulir dan login lain pilihan Anda, namun konsepnya akan sama.
Pertama untuk menghubungkan ke browser web, kami akan mengimpor webdriver dari modul selenium -
from selenium import webdriver
Sekarang, kita perlu mengimpor kunci dari modul selenium.
from selenium.webdriver.common.keys import Keys
Selanjutnya kita perlu memberikan username dan password untuk login ke akun facebook kita
user = "[email protected]"
pwd = ""
Selanjutnya, berikan jalur ke driver web untuk Chrome.
path = r'C:\\Users\\gaurav\\Desktop\\Chromedriver'
driver = webdriver.Chrome(executable_path=path)
driver.get("http://www.facebook.com")
Sekarang kami akan memverifikasi kondisi dengan menggunakan kata kunci assert.
assert "Facebook" in driver.title
Dengan bantuan baris kode berikut, kami mengirimkan nilai ke bagian email. Di sini kita mencarinya berdasarkan idnya tetapi kita dapat melakukannya dengan mencarinya dengan nama asdriver.find_element_by_name("email").
element = driver.find_element_by_id("email")
element.send_keys(user)
Dengan bantuan baris kode berikut kami mengirimkan nilai ke bagian kata sandi. Di sini kita mencarinya berdasarkan idnya tetapi kita dapat melakukannya dengan mencarinya dengan nama asdriver.find_element_by_name("pass").
element = driver.find_element_by_id("pass")
element.send_keys(pwd)
Baris kode berikutnya digunakan untuk menekan enter / login setelah memasukkan nilai di bidang email dan kata sandi.
element.send_keys(Keys.RETURN)
Sekarang kita akan menutup browser.
driver.close()
Setelah menjalankan skrip di atas, browser web Chrome akan terbuka dan Anda dapat melihat email dan kata sandi dimasukkan dan diklik pada tombol masuk.
Perbandingan: unittest atau Selenium
Perbandingan unittest dan selenium sulit karena jika Anda ingin bekerja dengan suite pengujian yang besar, diperlukan kekakuan sintaksis dari unites. Di sisi lain, jika Anda akan menguji fleksibilitas situs web maka tes Selenium akan menjadi pilihan pertama kami. Tapi bagaimana jika kita bisa menggabungkan keduanya. Kita dapat mengimpor selenium ke dalam Python unittest dan mendapatkan yang terbaik dari keduanya. Selenium dapat digunakan untuk mendapatkan informasi tentang suatu website dan unittest dapat mengevaluasi apakah informasi tersebut memenuhi kriteria untuk lulus tes atau tidak.
Misalnya, kami menulis ulang skrip Python di atas untuk otomatisasi login Facebook dengan menggabungkan keduanya sebagai berikut -
import unittest
from selenium import webdriver
class InputFormsCheck(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(r'C:\Users\gaurav\Desktop\chromedriver')
def test_singleInputField(self):
user = "[email protected]"
pwd = ""
pageUrl = "http://www.facebook.com"
driver=self.driver
driver.maximize_window()
driver.get(pageUrl)
assert "Facebook" in driver.title
elem = driver.find_element_by_id("email")
elem.send_keys(user)
elem = driver.find_element_by_id("pass")
elem.send_keys(pwd)
elem.send_keys(Keys.RETURN)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()