Jadual Kandungan
1. Mengendalikan JavaScript
Contoh
2. Mengendalikan Kuki
contoh
3. Proses kod pengesahan
4. Ejen pengguna menipu
5. Gunakan AJAX untuk mengendalikan kandungan dinamik
KESIMPULAN
Rumah pembangunan bahagian belakang Tutorial Python Mengikis Web Lanjutan dengan Python: Menangani JavaScript, Kuki dan CAPTCHA

Mengikis Web Lanjutan dengan Python: Menangani JavaScript, Kuki dan CAPTCHA

Sep 04, 2023 pm 03:49 PM
javascript python perangkak web

Mengikis Web Lanjutan dengan Python: Menangani JavaScript, Kuki dan CAPTCHA

Dalam era pembuatan keputusan berasaskan data, mengikis web telah menjadi kemahiran yang amat diperlukan untuk mengekstrak maklumat berharga daripada tapak web. Walau bagaimanapun, apabila tapak web menjadi lebih dinamik dan kompleks, teknik mengikis tradisional sering gagal menangkap semua data yang diperlukan. Di sinilah pengikisan web lanjutan dengan Python dimainkan. Artikel ini menyelidiki kerumitan berurusan dengan JavaScript, kuki dan CAPTCHA, yang merupakan cabaran biasa yang dihadapi oleh pengikis web. Melalui contoh dan teknik praktikal, kami meneroka cara perpustakaan Python seperti Selenium, permintaan dan BeautifulSoup boleh mengatasi halangan ini. Menjelang akhir artikel ini, kami akan mempunyai kit alat strategi untuk menavigasi kerumitan tapak web moden, membolehkan anda mengekstrak data dengan cekap dan berkesan.

1. Mengendalikan JavaScript

Banyak tapak web moden sangat bergantung pada JavaScript untuk memuatkan kandungan secara dinamik. Ini boleh menyebabkan masalah untuk teknik mengikis web tradisional, kerana data yang diperlukan mungkin tidak terdapat dalam kod sumber HTML. Nasib baik, terdapat alat dan perpustakaan tersedia dalam Python yang boleh membantu kami mengatasi cabaran ini.

Rangka kerja automasi penyemak imbas yang berkuasa ialah alat yang membolehkan kami berinteraksi dengan halaman web seperti pengguna manusia. Untuk menggambarkan kefungsiannya, mari kita terokai contoh senario di mana matlamat kita adalah untuk mendapatkan harga produk daripada tapak web e-dagang. Coretan kod berikut menunjukkan cara mengekstrak data dengan cekap menggunakan Selenium.

Contoh

from selenium import webdriver

# Set up the browser
driver = webdriver.Chrome()

# Navigate to the webpage
driver.get('https://www.example.com/products')

# Find the price elements using XPath
price_elements = driver.find_elements_by_xpath('//span[@class="price"]')

# Extract the prices
prices = [element.text for element in price_elements]

# Print the prices
for price in prices:
   print(price)

# Close the browser
driver.quit()
Salin selepas log masuk

Dalam contoh ini, kami memanfaatkan kuasa Selenium untuk menavigasi ke halaman web, menggunakan XPath untuk mencari elemen harga dan mengekstrak harga. Dengan cara ini, kami boleh mengikis data daripada tapak web yang sangat bergantung pada JavaScript dengan mudah.

2. Mengendalikan Kuki

Tapak web menggunakan kuki untuk menyimpan fail data kecil pada komputer atau peranti pengguna. Ia digunakan untuk pelbagai tujuan, seperti mengingati pilihan pengguna, sesi penjejakan dan menyampaikan kandungan yang diperibadikan. Apabila merangkak tapak web yang bergantung pada kuki, adalah perlu untuk mengendalikannya dengan sewajarnya untuk mengelakkan kemungkinan sekatan atau pengambilan data yang tidak tepat.

Pustaka permintaan dalam Python menyediakan fungsi untuk mengendalikan kuki. Kami boleh membuat permintaan awal ke tapak web, mendapatkan kuki, dan kemudian memasukkannya dalam permintaan seterusnya untuk mengekalkan sesi. Berikut ialah contoh -

contoh

import requests

# Send an initial request to obtain the cookies
response = requests.get('https://www.example.com')

# Get the cookies from the response
cookies = response.cookies

# Include the cookies in subsequent requests
response = requests.get('https://www.example.com/data', cookies=cookies)

# Extract and process the data from the response
data = response.json()

# Perform further operations on the data
Salin selepas log masuk

Dengan mengendalikan kuki dengan betul, kami boleh merangkak tapak yang memerlukan ketekunan sesi atau mempunyai kandungan khusus pengguna.

3. Proses kod pengesahan

CAPTCHA direka untuk membezakan antara skrip manusia dan skrip automatik, yang mewujudkan cabaran untuk alat mengikis web. Untuk mengatasi masalah ini, kami boleh menyepadukan menggunakan perkhidmatan penghuraian CAPTCHA pihak ketiga dengan API. Berikut ialah contoh menggunakan perkhidmatan penghuraian kod pengesahan pihak ketiga menggunakan perpustakaan permintaan Python.

Contoh

import requests

captcha_url = 'https://api.example.com/solve_captcha'
payload = {
   image_url': 'https://www.example.com/captcha_image.jpg',
   api_key': 'your_api_key'
}

response = requests.post(captcha_url, data=payload)
captcha_solution = response.json()['solution']
scraping_url = 'https://www.example.com/data'
scraping_payload = {
   'captcha_solution': captcha_solution
}
scraping_response = requests.get(scraping_url, params=scraping_payload)
data = scraping_response.json()
Salin selepas log masuk

4. Ejen pengguna menipu

Sesetengah tapak web menggunakan penapisan ejen pengguna untuk mengelakkan merangkak. Ejen pengguna ialah rentetan pengenalpastian yang dihantar oleh penyemak imbas ke pelayan tapak web untuk mengenal pasti dirinya. Secara lalai, perpustakaan permintaan Python menggunakan rentetan ejen pengguna untuk menunjukkan bahawa ia adalah skrip mengikis. Walau bagaimanapun, kami boleh mengubah suai rentetan ejen pengguna untuk meniru penyemak imbas biasa, dengan itu memintas penapisan ejen pengguna.

Contoh

Ini adalah contoh

import requests

# Set a custom user-agent string
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}

# Send a request with the modified user-agent
response = requests.get('https://www.example.com', headers=headers)

# Process the response as needed
Salin selepas log masuk

Menggunakan rentetan ejen pengguna yang terkenal daripada penyemak imbas popular, kami boleh menjadikan permintaan rangkak kami kelihatan lebih seperti trafik pengguna biasa, sekali gus mengurangkan peluang untuk disekat atau dikesan.

5. Gunakan AJAX untuk mengendalikan kandungan dinamik

Satu lagi cabaran biasa dalam mengikis web ialah berurusan dengan tapak web yang menggunakan permintaan AJAX untuk memuatkan kandungan secara dinamik. AJAX (Asynchronous JavaScript and XML) membenarkan tapak web mengemas kini bahagian halaman tanpa memerlukan muat semula penuh. Apabila merangkak tapak sedemikian, kami perlu mengenal pasti permintaan AJAX yang bertanggungjawab untuk mendapatkan data yang diperlukan dan mensimulasikan permintaan ini dalam skrip rangkak. Berikut adalah contoh.

Contoh

import requests
from bs4 import BeautifulSoup

# Send an initial request to the webpage
response = requests.get('https://www.example.com')

# Extract the dynamic content URL from the response
soup = BeautifulSoup(response.text, 'html.parser')
dynamic_content_url = soup.find('script', {'class': 'dynamic-content'}).get('src')

# Send a request to the dynamic content URL
response = requests.get(dynamic_content_url)

# Extract and process the data from the response
data = response.json()

# Perform further operations on the data
Salin selepas log masuk

Dalam contoh ini, kami mula-mula meminta halaman web dan menghuraikan respons menggunakan BeautifulSoup. Dengan menggunakan BeautifulSoup, kami boleh mengekstrak URL yang dikaitkan dengan kandungan dinamik daripada HTML yang dihuraikan. Kami kemudiannya meneruskan untuk menghantar permintaan lain secara khusus kepada URL kandungan dinamik.

KESIMPULAN

Ringkasnya, kami telah meneroka teknik lanjutan untuk mengikis web dengan Python, memfokuskan pada pengendalian JavaScript, kuki, CAPTCHA, spoofing ejen pengguna dan kandungan dinamik. Dengan menguasai teknik ini, kami boleh mengatasi pelbagai cabaran yang ditimbulkan oleh laman web moden dan mengekstrak data berharga dengan berkesan. Ingat, pengikisan web boleh menjadi alat yang berkuasa, tetapi ia harus sentiasa digunakan secara bertanggungjawab dan beretika untuk mengelak daripada menyebabkan bahaya atau melanggar privasi. Dengan pemahaman mendalam tentang teknologi canggih ini dan komitmen terhadap pengikisan beretika, anda boleh membuka kunci dunia data berharga untuk analisis, penyelidikan dan membuat keputusan.

Atas ialah kandungan terperinci Mengikis Web Lanjutan dengan Python: Menangani JavaScript, Kuki dan CAPTCHA. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Arahan sembang dan cara menggunakannya
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Python: Permainan, GUI, dan banyak lagi Python: Permainan, GUI, dan banyak lagi Apr 13, 2025 am 12:14 AM

Python cemerlang dalam permainan dan pembangunan GUI. 1) Pembangunan permainan menggunakan pygame, menyediakan lukisan, audio dan fungsi lain, yang sesuai untuk membuat permainan 2D. 2) Pembangunan GUI boleh memilih tkinter atau pyqt. TKInter adalah mudah dan mudah digunakan, PYQT mempunyai fungsi yang kaya dan sesuai untuk pembangunan profesional.

PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular PHP dan Python: Membandingkan dua bahasa pengaturcaraan yang popular Apr 14, 2025 am 12:13 AM

PHP dan Python masing -masing mempunyai kelebihan mereka sendiri, dan memilih mengikut keperluan projek. 1.PHP sesuai untuk pembangunan web, terutamanya untuk pembangunan pesat dan penyelenggaraan laman web. 2. Python sesuai untuk sains data, pembelajaran mesin dan kecerdasan buatan, dengan sintaks ringkas dan sesuai untuk pemula.

Bagaimana Debian Readdir Bersepadu Dengan Alat Lain Bagaimana Debian Readdir Bersepadu Dengan Alat Lain Apr 13, 2025 am 09:42 AM

Fungsi Readdir dalam sistem Debian adalah panggilan sistem yang digunakan untuk membaca kandungan direktori dan sering digunakan dalam pengaturcaraan C. Artikel ini akan menerangkan cara mengintegrasikan Readdir dengan alat lain untuk meningkatkan fungsinya. Kaedah 1: Menggabungkan Program Bahasa C dan Pipeline Pertama, tulis program C untuk memanggil fungsi Readdir dan output hasilnya:#termasuk#termasuk#includeintMain (intargc, char*argv []) {dir*dir; structdirent*entry; if (argc! = 2) {

Python dan Masa: Memanfaatkan masa belajar anda Python dan Masa: Memanfaatkan masa belajar anda Apr 14, 2025 am 12:02 AM

Untuk memaksimumkan kecekapan pembelajaran Python dalam masa yang terhad, anda boleh menggunakan modul, masa, dan modul Python. 1. Modul DateTime digunakan untuk merakam dan merancang masa pembelajaran. 2. Modul Masa membantu menetapkan kajian dan masa rehat. 3. Modul Jadual secara automatik mengatur tugas pembelajaran mingguan.

Nginx SSL Sijil Tutorial Debian Nginx SSL Sijil Tutorial Debian Apr 13, 2025 am 07:21 AM

Artikel ini akan membimbing anda tentang cara mengemas kini sijil NginxSSL anda pada sistem Debian anda. Langkah 1: Pasang Certbot terlebih dahulu, pastikan sistem anda mempunyai pakej CertBot dan Python3-CertBot-Nginx yang dipasang. Jika tidak dipasang, sila laksanakan arahan berikut: sudoapt-getupdateudoapt-getinstallcertbotpython3-certbot-nginx Langkah 2: Dapatkan dan konfigurasikan sijil Gunakan perintah certbot untuk mendapatkan sijil let'Sencrypt dan konfigurasikan nginx: sudoCertBot-ninx ikuti

Cara mengkonfigurasi pelayan https di debian openssl Cara mengkonfigurasi pelayan https di debian openssl Apr 13, 2025 am 11:03 AM

Mengkonfigurasi pelayan HTTPS pada sistem Debian melibatkan beberapa langkah, termasuk memasang perisian yang diperlukan, menghasilkan sijil SSL, dan mengkonfigurasi pelayan web (seperti Apache atau Nginx) untuk menggunakan sijil SSL. Berikut adalah panduan asas, dengan mengandaikan anda menggunakan pelayan Apacheweb. 1. Pasang perisian yang diperlukan terlebih dahulu, pastikan sistem anda terkini dan pasang Apache dan OpenSSL: sudoaptDateSudoaptgradesudoaptinsta

Panduan Pembangunan Plug-In Gitlab di Debian Panduan Pembangunan Plug-In Gitlab di Debian Apr 13, 2025 am 08:24 AM

Membangunkan plugin Gitlab pada Debian memerlukan beberapa langkah dan pengetahuan tertentu. Berikut adalah panduan asas untuk membantu anda memulakan proses ini. Memasang GitLab terlebih dahulu, anda perlu memasang GitLab pada sistem Debian anda. Anda boleh merujuk kepada manual pemasangan rasmi GitLab. Dapatkan token akses API sebelum melakukan integrasi API, anda perlu mendapatkan token akses API Gitlab terlebih dahulu. Buka papan pemuka Gitlab, cari pilihan "AccessTokens" dalam tetapan pengguna, dan menghasilkan token akses baru. Akan dijana

Perkhidmatan apa yang Apache Perkhidmatan apa yang Apache Apr 13, 2025 pm 12:06 PM

Apache adalah wira di belakang internet. Ia bukan sahaja pelayan web, tetapi juga platform yang kuat yang menyokong lalu lintas yang besar dan menyediakan kandungan dinamik. Ia memberikan fleksibiliti yang sangat tinggi melalui reka bentuk modular, yang membolehkan pengembangan pelbagai fungsi seperti yang diperlukan. Walau bagaimanapun, modulariti juga membentangkan cabaran konfigurasi dan prestasi yang memerlukan pengurusan yang teliti. Apache sesuai untuk senario pelayan yang memerlukan keperluan yang sangat disesuaikan dan memenuhi keperluan kompleks.

See all articles