Web Crawler adalah fitur bawaan dari API Scraper kami. Ini adalah alat yang digunakan untuk menemukan URL target, memilih konten yang relevan, dan mengirimkannya dalam jumlah besar. Ini merangkak situs web secara real-time dan pada skala untuk dengan cepat mengirimkan semua konten atau hanya data yang Anda butuhkan berdasarkan kriteria yang Anda pilih.
Ada tiga tugas utama yang bisa dilakukan oleh perayap web:
Melakukan penemuan URL;
Merangkak semua halaman di situs;
Indeks semua URL pada domain.
Gunakan ketika Anda perlu merangkak melalui situs dan menerima data parsed dalam jumlah besar, serta untuk mengumpulkan daftar URL dalam kategori tertentu atau dari seluruh situs web.
Ada tiga jenis output data yang dapat Anda terima saat menggunakan Web Crawler: daftar URL, hasil parsed, dan file HTML. Jika diperlukan, Anda dapat mengatur crawler web untuk mengunggah hasil ke penyimpanan cloud Anda.
Anda dapat dengan mudah mengontrol ruang lingkup merangkak dengan menyesuaikan lebarnya dan kedalamannya dengan filter. Web Crawler juga dapat menggunakan berbagai parameter pengikis, seperti geo-lokasi dan agen pengguna, untuk meningkatkan tingkat keberhasilan pekerjaan merangkak. Sebagian besar parameter pengikis ini tergantung pada API Scraper yang Anda gunakan.
Untuk mengontrol pekerjaan merangkak Anda, Anda perlu menggunakan titik akhir yang berbeda. Anda dapat memulai, berhenti dan melanjutkan pekerjaan Anda, mendapatkan info pekerjaan, mendapatkan daftar hasil hasil, dan mendapatkan hasilnya. Di bawah ini adalah titik akhir yang akan kami gunakan dalam tutorial merangkak ini. Untuk informasi lebih lanjut dan contoh output, kunjungi dokumentasi kami.
Titik akhir: https://ect.oxylabs.io/v1/jobs
Metode: POST
Otentikasi: Basic
Header Permintaan: Content-Type: application/json
Titik akhir ini akan memberikan daftar URL yang ditemukan saat memproses pekerjaan.
Titik akhir: https://ect.oxylabs.io/v1/jobs/{id}/sitemap
Metode: GET
Otentikasi: Basic
Titik akhir: https://ect.oxylabs.io/v1/jobs/{id}/aggregate
Metode: GET
Otentikasi: Basic
Hasil agregat dapat terdiri dari banyak data, jadi kami membaginya menjadi beberapa potongan berdasarkan ukuran chunk yang Anda tentukan. Gunakan titik akhir ini untuk mendapatkan daftar file chunk yang tersedia.
Titik akhir: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
Metode: GET
Otentikasi: Basic
Dengan titik akhir ini, Anda dapat mengunduh sebagian besar hasil agregat. Isi badan respons tergantung pada jenis output yang Anda pilih.
Hasilnya bisa menjadi salah satu dari yang berikut:
Indeks (daftar URL)
File JSON agregat dengan semua hasil yang diuraikan
File JSON agregat dengan semua hasil HTML
Untuk kenyamanan Anda, kami telah meletakkan semua parameter yang tersedia yang dapat Anda gunakan di tabel di bawah ini. Itu juga dapat ditemukan dalam dokumentasi kami.
Parameter | Keterangan | Nilai default |
---|---|---|
url | URL dari titik awal | - |
filters | Parameter ini digunakan untuk mengonfigurasi luas dan kedalaman pekerjaan merangkak, serta menentukan URL mana yang harus dimasukkan dalam hasil akhir. Lihat bagian ini untuk informasi lebih lanjut. | - |
filters:crawl | Menentukan perayap web URL mana yang akan termasuk dalam hasil akhir. Lihat bagian ini untuk informasi lebih lanjut. | - |
filters:process | Menentukan perayap web URL mana yang akan mengikis. Lihat bagian ini untuk informasi lebih lanjut. | - |
filters:max_depth | Menentukan panjang maksimum perayap web rantai URL akan mengikuti. Lihat bagian ini untuk informasi lebih lanjut. | 1 |
scrape_params | Parameter ini digunakan untuk menyempurnakan cara kami melakukan pekerjaan pengikisan. Misalnya, Anda mungkin ingin kami menjalankan JavaScript saat merangkak situs, atau Anda mungkin lebih suka kami menggunakan proxy dari lokasi tertentu. | - |
scrape_params:source | Lihat bagian ini untuk informasi lebih lanjut. | - |
scrape_params:geo_location | Lokasi geografis yang harus disesuaikan hasilnya. Lihat bagian ini untuk informasi lebih lanjut. | - |
scrape_params:user_agent_type | Jenis Perangkat dan Browser. Lihat bagian ini untuk informasi lebih lanjut. | desktop |
scrape_params:render | Mengaktifkan rendering JavaScript. Gunakan saat target membutuhkan JavaScript untuk memuat konten. Jika Anda ingin menggunakan fitur ini, atur nilai parameter ke HTML. Lihat bagian ini untuk informasi lebih lanjut. | - |
output:type_ | Jenis output. Kami dapat mengembalikan sitemap (daftar URL yang ditemukan saat merangkak) atau file agregat yang berisi hasil HTML atau data parsed. Lihat bagian ini untuk informasi lebih lanjut. | - |
upload | Parameter ini digunakan untuk menggambarkan lokasi penyimpanan cloud di mana Anda ingin kami meletakkan hasilnya setelah kami selesai. Lihat bagian ini untuk informasi lebih lanjut. | - |
upload:storage_type | Tentukan jenis penyimpanan cloud. Satu -satunya nilai yang valid adalah S3 (untuk AWS S3). GCS (untuk Google Cloud Storage) akan segera hadir. | - |
upload:storage_url | URL ember penyimpanan. | - |
Menggunakan parameter ini mudah, karena Anda dapat meneruskannya dengan muatan permintaan. Di bawah ini Anda dapat menemukan contoh kode di Python.
Untuk kesederhanaan, Anda dapat menggunakan tukang pos untuk membuat permintaan merangkak. Unduh koleksi postman ini untuk mencoba semua titik akhir Web Crawler. Berikut tutorial video langkah demi langkah yang dapat Anda ikuti:
Cara merangkak situs web: panduan langkah demi langkah
Untuk membuat permintaan HTTP di Python, kami akan menggunakan Perpustakaan Permintaan. Instal dengan memasukkan yang berikut di terminal Anda:
pip install requests
Untuk menangani hasil HTML, kami akan menggunakan Perpustakaan Beautifulsoup4 untuk menguraikan hasil dan membuatnya lebih mudah dibaca. Langkah ini opsional, tetapi Anda dapat menginstal pustaka ini dengan:
pip install BeautifulSoup4
Dalam contoh berikut, kami menggunakan parameter sitemap
untuk membuat pekerjaan yang merangkak beranda Amazon dan mendapatkan daftar URL yang ditemukan di dalam halaman awal. Dengan parameter crawl
dan process
diatur ke “.*”
, Web Crawler akan mengikuti dan mengembalikan URL Amazon. Kedua parameter ini menggunakan ekspresi reguler (Regex) untuk menentukan URL apa yang harus dirangkak dan diproses. Pastikan untuk mengunjungi dokumentasi kami untuk detail lebih lanjut dan sumber daya yang berguna.
Kami belum perlu memasukkan parameter source
karena kami belum mengikis konten dari URL. Menggunakan modul json
, kami menulis data ke dalam file .json , dan kemudian, dengan modul pprint
, kami mencetak konten terstruktur. Mari kita lihat contohnya:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Crawl all URLs inside the target URL.
payload = {
"url" : "https://www.amazon.com/" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"user_agent_type" : "desktop" ,
},
"output" : {
"type_" : "sitemap"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_sitemap.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Bergantung pada ukuran permintaan, prosesnya mungkin membutuhkan sedikit waktu. Anda dapat memastikan pekerjaan selesai dengan memeriksa informasi pekerjaan . Setelah selesai, kirim permintaan lain ke titik akhir sitemap https://ect.oxylabs.io/v1/jobs/{id}/sitemap
untuk mengembalikan daftar URL. Misalnya:
import requests , json
from pprint import pprint
# Store the JSON response containing URLs (sitemap).
sitemap = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/sitemap' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'sitemap.json' , 'w' ) as f :
json . dump ( sitemap . json (), f )
# Print the decoded JSON response.
pprint ( sitemap . json ())
Untuk mendapatkan konten parsed, gunakan parameter parsed
. Dengan menggunakan contoh di bawah ini, kita dapat merangkak semua URL yang ditemukan di halaman Amazon ini dan kemudian menguraikan konten setiap URL. Kali ini, kami menggunakan sumber amazon
saat kami mengikis konten dari halaman Amazon yang ditentukan. Jadi, mari kita lihat semua ini disatukan dalam Python:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Parse content from the URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "amazon" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "parsed"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_parsed.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Perhatikan bahwa jika Anda ingin menggunakan parameter geo_location
saat mengikis halaman Amazon, Anda harus menetapkan nilainya ke kode pos/postal lokasi yang disukai. Untuk informasi lebih lanjut, kunjungi halaman ini dalam dokumentasi kami.
Setelah pekerjaan selesai, Anda dapat memeriksa berapa banyak potongan permintaan Anda yang telah dihasilkan dan kemudian mengunduh konten dari setiap potongan dengan titik akhir ini: https://ect.oxylabs.io/v1/jobs/{id}/aggregate/{chunk}
. Misalnya, dengan cuplikan kode berikut, kami mencetak potongan pertama:
import requests , json
from pprint import pprint
# Store the JSON response containing parsed results.
parsed_results = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Write the decoded JSON response to a .json file.
with open ( 'parsed_results_1.json' , 'w' ) as f :
json . dump ( parsed_results . json (), f )
# Print the decoded JSON response.
pprint ( parsed_results . json ())
Kode untuk mendapatkan hasil HTML tidak banyak berbeda dari kode di bagian sebelumnya. Satu -satunya perbedaan adalah bahwa kami telah mengatur parameter type_
ke html
. Mari kita lihat sampel kode:
import requests , json
from pprint import pprint
# Set the content type to JSON.
headers = { "Content-Type" : "application/json" }
# Index HTML results of URLs found in the target URL.
payload = {
"url" : "https://www.amazon.com/s?i=electronics-intl-ship&bbn=16225009011&rh=n%3A502394%2Cn%3A281052&dc&qid"
"=1679564333&rnid=502394&ref=sr_pg_1" ,
"filters" : {
"crawl" : [ ".*" ],
"process" : [ ".*" ],
"max_depth" : 1
},
"scrape_params" : {
"source" : "universal" ,
"user_agent_type" : "desktop"
},
"output" : {
"type_" : "html"
}
}
# Create a job and store the JSON response.
response = requests . request (
'POST' ,
'https://ect.oxylabs.io/v1/jobs' ,
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here
headers = headers ,
json = payload ,
)
# Write the decoded JSON response to a .json file.
with open ( 'job_html.json' , 'w' ) as f :
json . dump ( response . json (), f )
# Print the decoded JSON response.
pprint ( response . json ())
Sekali lagi, Anda harus membuat permintaan untuk mengambil setiap bagian dari hasilnya. Kami akan menggunakan Perpustakaan Beautifulsoup4 untuk mengurai HTML, tetapi langkah ini opsional. Kami kemudian menulis konten yang diuraikan ke file .html . Contoh kode di bawah ini mengunduh konten dari potongan pertama:
import requests
from bs4 import BeautifulSoup
# Store the JSON response containing HTML results.
html_response = requests . request (
'GET' ,
'https://ect.oxylabs.io/v1/jobs/{id}/aggregate/1' , # Replace {id] with the job ID.
auth = ( 'USERNAME' , 'PASSWORD' ), # Your credentials go here.
)
# Parse the HTML content.
soup = BeautifulSoup ( html_response . content , 'html.parser' )
html_results = soup . prettify ()
# Write the HTML results to an .html file.
with open ( 'html_results.html' , 'w' ) as f :
f . write ( html_results )
# Print the HTML results.
print ( html_results )
Anda dapat memodifikasi file kode sesuai kebutuhan sesuai kebutuhan Anda.
Tutorial ini mencakup aspek -aspek mendasar dari penggunaan crawler web. Kami merekomendasikan untuk melihat dokumentasi kami untuk informasi lebih lanjut tentang penggunaan titik akhir dan parameter kueri. Jika Anda memiliki pertanyaan, Anda selalu dapat menghubungi kami di [email protected] atau melalui obrolan langsung di situs web kami.