Rumah >pembangunan bahagian belakang >Tutorial Python >Membuka kunci Faedah Menggunakan cURL dengan Python

Membuka kunci Faedah Menggunakan cURL dengan Python

Susan Sarandon
Susan Sarandonasal
2025-01-24 16:12:11946semak imbas

Unlocking the Benefits of Using cURL with Python

Pengikisan web—seni mengekstrak data dalam talian—adalah teknik yang berkuasa untuk penyelidikan, analisis dan automasi. Python menawarkan pelbagai perpustakaan untuk tujuan ini, tetapi cURL, diakses melalui PycURL, menonjol untuk kelajuan dan ketepatannya. Panduan ini menunjukkan cara memanfaatkan keupayaan cURL dalam Python untuk mengikis web yang cekap. Kami juga akan membandingkannya dengan alternatif popular seperti Permintaan, HTTPX dan AIOHTTP.

Memahami cURL

cURL ialah alat baris arahan untuk menghantar permintaan HTTP. Kepantasan, fleksibiliti dan sokongannya untuk pelbagai protokol menjadikannya aset yang berharga. Contoh asas:

DAPATKAN permintaan: curl -X GET "https://httpbin.org/get"

Permintaan POS: curl -X POST "https://httpbin.org/post"

PycURL meningkatkan kuasa cURL dengan menyediakan kawalan terperinci dalam skrip Python anda.

Langkah 1: Memasang PycURL

Pasang PycURL menggunakan pip:

<code class="language-bash">pip install pycurl</code>

Langkah 2: DAPATKAN Permintaan dengan PycURL

Berikut ialah cara untuk melaksanakan permintaan GET menggunakan PycURL:

<code class="language-python">import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://httpbin.org/get')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())
c.perform()
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1'))</code>

Kod ini menunjukkan keupayaan PycURL untuk mengurus permintaan HTTP, termasuk menetapkan pengepala dan mengendalikan sijil SSL.

Langkah 3: POST Permintaan dengan PycURL

Permintaan POST, penting untuk penyerahan borang dan interaksi API, adalah sama mudah:

<code class="language-python">import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://httpbin.org/post')
post_data = 'param1=python&param2=pycurl'
c.setopt(c.POSTFIELDS, post_data)
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())
c.perform()
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1'))</code>

Contoh ini mempamerkan penghantaran data dengan permintaan POST.

Langkah 4: Pengepala Tersuai dan Pengesahan

PycURL membolehkan anda menambah pengepala tersuai untuk pengesahan atau simulasi ejen pengguna:

<code class="language-python">import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://httpbin.org/get')
c.setopt(c.HTTPHEADER, ['User-Agent: MyApp', 'Accept: application/json'])
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())
c.perform()
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1'))</code>

Ini menggambarkan penggunaan pengepala tersuai.

Langkah 5: Mengendalikan Respons XML

PycURL mengendalikan respons XML dengan cekap:

<code class="language-python">import pycurl
import certifi
from io import BytesIO
import xml.etree.ElementTree as ET

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://www.google.com/sitemap.xml')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())
c.perform()
c.close()
body = buffer.getvalue()
root = ET.fromstring(body.decode('utf-8'))
print(root.tag, root.attrib)</code>

Ini menunjukkan penghuraian XML terus dalam aliran kerja anda.

Langkah 6: Pengendalian Ralat Teguh

Pengendalian ralat adalah penting untuk pengikisan yang boleh dipercayai:

<code class="language-python">import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'https://example.com')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())

try:
    c.perform()
except pycurl.error as e:
    errno, errstr = e.args
    print(f"Error: {errstr} (errno {errno})")
finally:
    c.close()
    body = buffer.getvalue()
    print(body.decode('iso-8859-1'))</code>

Kod ini memastikan pengendalian ralat yang anggun.

Langkah 7: Ciri Lanjutan: Kuki dan Tamat Masa

PycURL menyokong ciri lanjutan seperti kuki dan tamat masa:

<code class="language-python">import pycurl
import certifi
from io import BytesIO

buffer = BytesIO()
c = pycurl.Curl()
c.setopt(c.URL, 'http://httpbin.org/cookies')
c.setopt(c.COOKIE, 'user_id=12345')
c.setopt(c.TIMEOUT, 30)
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())
c.perform()
c.close()
body = buffer.getvalue()
print(body.decode('utf-8'))</code>

Contoh ini menunjukkan penggunaan kuki dan menetapkan tamat masa.

Langkah 8: PycURL lwn. Perpustakaan Lain

PycURL menawarkan prestasi dan fleksibiliti yang unggul, tetapi mempunyai keluk pembelajaran yang lebih curam dan tidak mempunyai sokongan tak segerak. Permintaan adalah mesra pengguna tetapi kurang berprestasi. HTTPX dan AIOHTTP cemerlang dalam operasi tak segerak dan sokongan protokol moden. Pilih perpustakaan yang paling sesuai dengan keperluan dan kerumitan projek anda.

Kesimpulan

PycURL menyediakan gabungan kelajuan dan kawalan yang berkuasa untuk tugas mengikis web lanjutan. Walaupun ia memerlukan pemahaman yang lebih mendalam daripada perpustakaan yang lebih ringkas, faedah prestasi menjadikannya pilihan yang berbaloi untuk projek yang menuntut.

Atas ialah kandungan terperinci Membuka kunci Faedah Menggunakan cURL dengan Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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