Treoir maidir le curl a úsáid le Python

Tuairimí: 0

Is éard atá i gceist le scríobadh gréasáin ná sonraí a bhaint as láithreáin ghréasáin le haghaidh tascanna mar anailís sonraí, taighde, agus uathoibriú. Cé go dtugann Python leabharlanna chun iarratais HTTPS a sheoladh agus scríobadh a dhéanamh, is féidir le CURL trí Pycurl a bheith níos éifeachtaí. Sa rang teagaisc seo, taispeánfaimid conas python Curl a úsáid chun leathanaigh ghréasáin a scrape. Cuirfimid samplaí ar fáil agus déanfaimid comparáid idir a fheidhmíocht le leabharlanna coitianta eile ar nós iarratais, httpx, agus AiOHTTP.

Ag tosú le Curl agus Python

Sula dtéann tú isteach i gcomhtháthú Python, tá sé riachtanach bunghnéithe curl a thuiscint. Is féidir leat orduithe CURL a úsáid go díreach sa teirminéal chun tascanna a dhéanamh mar iarratais a dhéanamh agus a phostáil.

Orduithe Curl Sampla:

# GET iarr
curl -X GET "https://httpbin.org/get"

# POST iarr
curl -X POST "https://httpbin.org/post"

1.png

2.png

Leabharlanna riachtanacha a shuiteáil

Chun Curl a úsáid i Python, teastaíonn an Leabharlann Pycurl uainn, a sholáthraíonn comhéadan Python don leabharlann CURL.

Pycurl a shuiteáil:

pip install pycurl

Iarratais HTTP a dhéanamh le Pycurl

Tugann Pycurl rialú mionsonraithe ar iarratais HTTP i Python. Anseo thíos tá sampla ag léiriú conas iarratas GET a dhéanamh le Pycurl:

import pycurl
import certifi
from io import BytesIO

# Cruthaigh réad Bytesio chun na sonraí freagartha a choinneáil
buffer = BytesIO()

# Tús a chur le réad curl
c = pycurl.Curl()

# Socraigh an URL don iarratas HTTP GET
c.setopt(c.URL, 'https://httpbin.org/get')

# Socraigh an maolán chun na sonraí aschuir a ghabháil
c.setopt(c.WRITEDATA, buffer)

# Socraigh an cosán go dtí an comhad cuachta CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())

# An t -iarratas HTTP a chomhlíonadh
c.perform()

# Dún an réad CURL chun acmhainní a shaoradh
c.close()

# Aisghabháil ábhar an fhreagra ón maolán
body = buffer.getvalue()

# An comhlacht freagartha a dhíchódú agus a phriontáil
print(body.decode('iso-8859-1'))

Iarratais ar Phost a Láimhseáil

Tá sé coitianta sonraí a sheoladh le hiarratais poist. Le Pycurl, bain úsáid as an rogha postfields. Seo sampla d'iarratas poist a dhéanamh le Pycurl:

import pycurl
import certifi
from io import BytesIO

# Cruthaigh réad Bytesio chun na sonraí freagartha a choinneáil
buffer = BytesIO()

# Tús a chur le réad curl
c = pycurl.Curl()

# Socraigh an URL don iarratas ar phost HTTP
c.setopt(c.URL, 'https://httpbin.org/post')

# Socraigh na sonraí atá le cur sa phost
post_data = 'param1="pycurl"¶m2=article'
c.setopt(c.POSTFIELDS, post_data)

# Socraigh an maolán chun na sonraí aschuir a ghabháil
c.setopt(c.WRITEDATA, buffer)

# Socraigh an cosán go dtí an comhad cuachta CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())

# An t -iarratas HTTP a chomhlíonadh
c.perform()

# Dún an réad CURL chun acmhainní a shaoradh
c.close()

# Aisghabháil ábhar an fhreagra ón maolán
body = buffer.getvalue()

# An comhlacht freagartha a dhíchódú agus a phriontáil
print(body.decode('iso-8859-1'))

Ceanntásca saincheaptha HTTP a láimhseáil

Is minic a theastaíonn ceanntásca saincheaptha nó fíordheimhniú le hiarratais HTTP. Anseo thíos tá sampla de cheanntásca saincheaptha a leagan síos le Pycurl:

import pycurl
import certifi
from io import BytesIO

# Cruthaigh réad Bytesio chun na sonraí freagartha a choinneáil
buffer = BytesIO()

# Tús a chur le réad curl
c = pycurl.Curl()

# Socraigh an URL don iarratas HTTP GET
c.setopt(c.URL, 'https://httpbin.org/get')

# Socraigh ceanntásca saincheaptha HTTP
c.setopt(c.HTTPHEADER, ['User-Agent: MyApp', 'Accept: application/json'])

# Socraigh an maolán chun na sonraí aschuir a ghabháil
c.setopt(c.WRITEDATA, buffer)

# Socraigh an cosán go dtí an comhad cuachta CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())

# An t -iarratas HTTP a chomhlíonadh
c.perform()

# Dún an réad CURL chun acmhainní a shaoradh
c.close()

# Aisghabháil ábhar an fhreagra ón maolán
body = buffer.getvalue()

# An comhlacht freagartha a dhíchódú agus a phriontáil
print(body.decode('iso-8859-1'))

Freagraí XML a láimhseáil

Tá sé ríthábhachtach freagairtí XML a pharsáil agus a láimhseáil agus tú ag obair le APIs. Anseo thíos tá sampla de láimhseáil freagairtí XML le Pycurl:

# Iompórtáil na leabharlanna riachtanacha
import pycurl  # Leabharlann chun iarratais HTTP a dhéanamh
import certifi  # Leabharlann le haghaidh Fíorú Teastais SSL
from io import BytesIO  # Leabharlann chun sruthanna beart a láimhseáil
import xml.etree.ElementTree as ET  # Leabharlann chun XML a pharsáil

# Cruthaigh maolán chun na sonraí freagartha a choinneáil
buffer = BytesIO()

# Tús a chur le réad curl
c = pycurl.Curl()

# Socraigh an URL don iarratas HTTP GET
c.setopt(c.URL, 'https://www.google.com/sitemap.xml')

# Socraigh an maolán chun na sonraí aschuir a ghabháil
c.setopt(c.WRITEDATA, buffer)

# Socraigh an cosán go dtí an comhad cuachta CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())

# An t -iarratas HTTP a chomhlíonadh
c.perform()

# Dún an réad CURL chun acmhainní a shaoradh
c.close()

# Aisghabháil ábhar an fhreagra ón maolán
body = buffer.getvalue()

# Parse an t -ábhar XML i réad ElementTree
root = ET.fromstring(body.decode('utf-8'))

# Priontáil an chlib agus na tréithe den fhréamh -eilimint den chrann XML
print(root.tag, root.attrib)

Earráidí HTTP a láimhseáil

Tá láimhseáil láidir earráide riachtanach chun iarratais iontaofa HTTP a dhéanamh. Anseo thíos tá sampla de láimhseáil earráide le pycurl:

import pycurl  # Iompórtáil an Leabharlann Pycurl
import certifi  # Iompórtáil an Leabharlann Certifi
from io import BytesIO  # Allmhairiú bytesio chun sruthanna beart a láimhseáil

# Tús a chur le réad curl
c = pycurl.Curl()

buffer = BytesIO()
# Socraigh an URL don iarratas HTTP
c.setopt(c.URL, 'http://example.com')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())

try:
    # An t -iarratas HTTP a chomhlíonadh
    c.perform()
except pycurl.error as e:
    # Má tharlaíonn earráid le linn na hiarrata, gabh an eisceacht pycurl.error
    errno, errstr = e.args  # Aisghabháil an uimhir earráide agus an teachtaireacht earráide
    print(f'Error: {errstr} (errno {errno})')  # Priontáil an teachtaireacht earráide agus an uimhir earráide
finally:
    # Dún an réad CURL chun acmhainní a shaoradh
    c.close()
    body = buffer.getvalue()
    print(body.decode('iso-8859-1'))  # An comhlacht freagartha a dhíchódú agus a phriontáil

3.png

Athraíonn an cód ceartaithe an URL go https://example.com, ag réiteach an tsaincheist prótacail. Déanann sé athrá ar an bpróiseas chun an t -iarratas a chumrú, é a dhéanamh, agus earráidí a láimhseáil mar atá sa chéad bhlúire. Ar fhorghníomhú rathúil, déantar an comhlacht freagartha a dhíchódú agus a phriontáil arís. Léiríonn na blúirí seo an tábhacht a bhaineann le cumraíocht URL chuí agus láimhseáil earráidí láidre in iarratais HTTP le Pycurl.

import pycurl  #Iompórtáil an Leabharlann Pycurl
import certifi  #Iompórtáil an Leabharlann Certifi
from io import BytesIO  # Allmhairiú bytesio chun sruthanna beart a láimhseáil

# Reinitialize the Curl object
c = pycurl.Curl()

buffer = BytesIO()
# Ceartaigh an URL chun https a úsáid
c.setopt(c.URL, 'https://example.com')
c.setopt(c.WRITEDATA, buffer)
c.setopt(c.CAINFO, certifi.where())

try:
    # An t -iarratas ceartaithe HTTP a chomhlíonadh
    c.perform()
except pycurl.error as e:
    # Má tharlaíonn earráid le linn na hiarrata, gabh an eisceacht pycurl.error
    errno, errstr = e.args  # Aisghabháil an uimhir earráide agus an teachtaireacht earráide
    print(f'Error: {errstr} (errno {errno})')  # Priontáil an teachtaireacht earráide agus an uimhir earráide
finally:
    # Dún an réad CURL chun acmhainní a shaoradh
    c.close()
    body = buffer.getvalue()
    print(body.decode('iso-8859-1'))  # An comhlacht freagartha a dhíchódú agus a phriontáil

Gnéithe Curl Casta

Soláthraíonn CURL go leor roghanna ardleibhéil chun iompar iarratais HTTP a rialú, mar shampla fianáin agus amanna a láimhseáil. Anseo thíos tá sampla a léiríonn ardroghanna le Pycurl.

import pycurl  # Iompórtáil an Leabharlann Pycurl
import certifi  # Iompórtáil an Leabharlann Certifi le haghaidh Fíorú Teastais SSL
from io import BytesIO  # Allmhairiú bytesio chun sruthanna beart a láimhseáil

# Cruthaigh maolán chun na sonraí freagartha a choinneáil
buffer = BytesIO()

# Tús a chur le réad curl
c = pycurl.Curl()

# Socraigh an URL don iarratas HTTP
c.setopt(c.URL, 'http://httpbin.org/cookies')

# Cumasaigh fianáin trí phéire sainiúil luach-luach a shocrú
c.setopt(c.COOKIE, 'cookies_key=cookie_value')

# Socraigh am ama de 30 soicind don iarratas
c.setopt(c.TIMEOUT, 30)

# Socraigh an maolán chun na sonraí aschuir a ghabháil
c.setopt(c.WRITEDATA, buffer)

# Socraigh an cosán go dtí an comhad cuachta CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())

# An t -iarratas HTTP a chomhlíonadh
c.perform()

# Dún an réad CURL chun acmhainní a shaoradh
c.close()

# Aisghabháil ábhar an fhreagra ón maolán
body = buffer.getvalue()

# Déan an comhlacht freagartha a dhíchódú ag baint úsáide as ionchódú UTF-8 agus é a phriontáil
print(body.decode('utf-8'))

Comparáid idir pycurl, iarratais, httpx, agus aiohttp

Nuair a bhíonn tú ag obair le hiarratais HTTP i Python, tá ceithre leabharlann tóir Pycurl, iarratais, HTTPX, agus AIOHTTP. Tá láidreachtaí agus laigí ag gach ceann acu. Seo comparáid chun cabhrú leat an uirlis cheart a roghnú do do chuid riachtanas:

Príomhscannán PycURL Requests HTTPX AIOHTTP
Éascaíocht úsáide Measartha An -éasca Gan dabht ar bith Measartha
Feidhmíocht In airde Measartha In airde In airde
Tacaíocht asynchronous Ar bith Ar bith
Streaming Áirithe
Tacaíocht prótacail Fairsing (tacaíonn sé le go leor prótacal) HTTP/HTTPS HTTP/HTTPS, HTTP/2, WebSockets HTTP/HTTPS, WebSockets

Tugann an anailís chomparáideach le fios go dtugann Pycurl ardfheidhmíocht agus solúbthacht, rud a chiallaíonn go bhfuil sé oiriúnach d'úsáideoirí ardleibhéil a dteastaíonn bainistiú mionsonraithe ar iarratais HTTP uathu. Ar an láimh eile, tá iarratais agus HTTPX níos oiriúnaí do chásanna níos simplí, níos iomasach. Seasann AiOHTTP amach i láimhseáil tascanna neamhghnácha, ag soláthar uirlisí éifeachtacha chun iarratais neamhghnácha a bhainistiú.

Braitheann rogha na leabharlainne ceart ar riachtanais agus ar riachtanais shonracha do thionscadail, agus is rogha iontach é Pycurl dóibh siúd a bhfuil luas agus ardchumais ag teastáil uathu.

Tuairimí:

0 tuairimí