ga
English
Español
中國人
Tiếng Việt
Deutsch
Українська
Português
Français
भारतीय
Türkçe
한국인
Italiano
اردو
Indonesia
Polski Baineann scrapáil ghréasáin le sonraí a bhaint as suíomhanna gréasáin chun anailís, taighde nó uathoibriú a dhéanamh. Sa rang teagaisc cURL Python seo, foghlaimeoidh tú conas iarrataí gréasáin a dhéanamh ag úsáid PycURL le samplaí praiticiúla. Taispeánfaimid freisin conas cURL tipiciúil a thiontú go hiarratas Python agus é a chur i gcomparáid le leabharlanna cosúil le Requests, HTTPX, agus AIOHTTP.
Tá sé riachtanach an coincheap seo a thuiscint chun comhtháthú Python a dhéanamh, mar sin tosaímis leis na bunghnéithe. Is féidir leat orduithe Python cURL a úsáid go díreach sa teirminéal chun tascanna cosúil le hiarrataí GET agus POST a dhéanamh.
Samplaí orduithe cURL:
# Iarratas GET
curl -X GET "https://httpbin.org/get"
# Iarratas POST
curl -X POST "https://httpbin.org/post"
Chun cURL a úsáid, suiteáil an leabharlann Python PycURL.
Suiteáil:
pip install pycurl
Cuireann úsáid curl i Python smacht mionsonraithe ar iarrataí HTTP ar fáil. Seo thíos sampla ag taispeáint 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()
# Tosaigh 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 CA chun fíorú SSL/TLS a dhéanamh
c.setopt(c.CAINFO, certifi.where())
# Déan an t-iarratas HTTP
c.perform()
# Dún an réad cURL chun aon acmhainní a shaoradh
c.close()
# Faigh ábhar an fhreagra ón maolán
body = buffer.getvalue()
# Dí-chódaigh agus priontáil an corp freagartha
print(body.decode('iso-8859-1'))
Tá sé coitianta sonraí a sheoladh le POST – curl go hiarrataí Python. Leis an leabharlann, bain úsáid as an rogha POSTFIELDS. Seo sampla ag déanamh iarratas POST le PycURL:
import pycurl
import certifi
from io import BytesIO
# Cruthaigh réad BytesIO chun na sonraí freagartha a choinneáil
buffer = BytesIO()
# Tosaigh réad cURL
c = pycurl.Curl()
# Socraigh an URL don iarratas HTTP POST
c.setopt(c.URL, 'https://httpbin.org/post')
# Socraigh na sonraí le postáil
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 CA chun fíorú SSL/TLS a dhéanamh
c.setopt(c.CAINFO, certifi.where())
# Déan an t-iarratas HTTP
c.perform()
# Dún an réad cURL chun acmhainní an chórais a scaoileadh
c.close()
# Faigh ábhar an fhreagra ón maolán
body = buffer.getvalue()
# Dí-chódaigh agus priontáil an corp freagartha
print(body.decode('iso-8859-1'))
Is minic a bhíonn gá le ceannteidil saincheaptha nó fíordheimhnithe le hiarrataí HTTP. Is minic a éilíonn ceannteidil saincheaptha: go n-áirítear comharthaí fíordheimhnithe nó ceannteidil ar leith. Is féidir ceannteidil saincheaptha a láimhseáil go héifeachtach nuair a bhíonn a fhios agat conas teicnící Python curl json parse a úsáid:
import pycurl
import certifi
from io import BytesIO
# Cruthaigh réad BytesIO chun na sonraí freagartha a choinneáil
buffer = BytesIO()
# Tosaigh réad cURL
c = pycurl.Curl()
# Socraigh an URL don iarratas HTTP GET
c.setopt(c.URL, 'https://httpbin.org/get')
# Socraigh ceannteidil 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 CA chun fíorú SSL/TLS a dhéanamh
c.setopt(c.CAINFO, certifi.where())
# Déan an t-iarratas HTTP
c.perform()
# Nuair atá tú críochnaithe, dún an láimhseáil cURL chun glanadh suas
c.close()
# Faigh ábhar an fhreagra ón maolán
body = buffer.getvalue()
# Dí-chódaigh agus priontáil an corp freagartha
print(body.decode('iso-8859-1'))
Agus XML á pharsáil agus APIanna éagsúla á láimhseáil, tá sé riachtanach freagraí XML a bhainistiú. Seo thíos sampla de conas freagraí XML a láimhseáil le PycURL:
# Iompórtáil na leabharlanna riachtanacha
import pycurl # Leabharlann chun iarrataí HTTP a sheoladh
import certifi # Leabharlann chun teastais SSL a fhíorú
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()
# Tosaigh 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 CA chun fíorú SSL/TLS a dhéanamh
c.setopt(c.CAINFO, certifi.where())
# Déan an t-iarratas HTTP
c.perform()
# Dún an réad cURL chun acmhainní an chórais a scaoileadh
c.close()
# Faigh ábhar an fhreagra ón maolán
body = buffer.getvalue()
# Parsáil an t-ábhar XML mar réad ElementTree
root = ET.fromstring(body.decode('utf-8'))
# Priontáil an clib agus tréithe an eilimint fréimhe den chrann XML
print(root.tag, root.attrib)
Tá earráidí a láimhseáil le haghaidh iarrataí HTTP ina ghné thábhachtach den obair le comhtháthuithe seachtracha. Seo sampla de láimhseáil earráidí ag úsáid PyCURL:
import pycurl # Iompórtáil an leabharlann pycurl
import certifi # Iompórtáil an leabharlann certifi
from io import BytesIO # Iompórtáil BytesIO chun sruthanna beart a láimhseáil
# Tosaigh 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:
# Déan an t-iarratas HTTP
c.perform()
except pycurl.error as e:
# Má tharlaíonn earráid le linn an iarratais, gabh an eisceacht pycurl.error
errno, errstr = e.args # Faigh uimhir agus teachtaireacht na hearráide
print(f'Earráid: {errstr} (uimhir {errno})') # Priontáil teachtaireacht agus uimhir na hearráide
finally:
# Dún an réad cURL chun acmhainní an chórais a scaoileadh
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1')) # Dí-chódaigh agus priontáil an corp freagartha
Déanann an cód ceartaithe an URL a choigeartú go https://example.com, ag réiteach na faidhbe prótacail. Ina dhiaidh sin, déanann an t-údar na céimeanna céanna arís chun an t-iarratas a chumrú, a rith, agus earráidí a láimhseáil mar a rinneadh sa chéad shampla. Tar éis rith rathúil, dí-chódaítear agus priontáiltear corp an fhreagra arís. Cuireann sé seo béim ar thábhacht URLanna a thógáil i gceart, sreabhadh ceart iarratais a choinneáil, agus thar aon rud eile, láimhseáil earráidí láidir a chur i bhfeidhm agus iarrataí HTTP á ndéanamh le PycURL.
import pycurl # Iompórtáil an leabharlann pycurl
import certifi # Iompórtáil an leabharlann certifi
from io import BytesIO # Iompórtáil BytesIO chun sruthanna beart a láimhseáil
# Ath-thosaigh an réad Curl
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:
# Déan an t-iarratas HTTP ceartaithe
c.perform()
except pycurl.error as e:
# Má tharlaíonn earráid le linn an iarratais, gabh an eisceacht pycurl.error
errno, errstr = e.args # Faigh uimhir agus teachtaireacht na hearráide
print(f'Earráid: {errstr} (uimhir {errno})') # Priontáil an teachtaireacht earráide agus uimhir na hearráide
finally:
# Dún an réad cURL chun acmhainní an chórais a scaoileadh
c.close()
body = buffer.getvalue()
print(body.decode('iso-8859-1')) # Dí-chódaigh agus priontáil corp an fhreagra
Agus iarratais cURL á thiontú go Python, is fiú a thabhairt faoi deara go dtugann cURL go leor roghanna chun iompar HTTP a rialú, mar shampla bainistiú fianáin agus teorainneacha ama. Seo thíos sampla a thaispeánann roghanna chun cinn chun orduithe curl a rith i Python.
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 # Iompórtáil BytesIO chun sruthanna beart a láimhseáil
# Cruthaigh maolán chun na sonraí freagartha a choinneáil
buffer = BytesIO()
# Tosaigh 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 eochair-luacha a shocrú
c.setopt(c.COOKIE, 'cookies_key=cookie_value')
# Socraigh teorainn ama 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 chuig an mbundel CA le haghaidh fíorú SSL/TLS
c.setopt(c.CAINFO, certifi.where())
# Déan an t-iarratas HTTP
c.perform()
# Dún an réad cURL chun acmhainní an chórais a scaoileadh
c.close()
# Faigh ábhar an fhreagra ón maolán
body = buffer.getvalue()
# Dí-chódaigh corp an fhreagra ag úsáid ionchódaithe UTF-8 agus priontáil é
print(body.decode('utf-8'))
Tá ceithre leabharlann coitianta le húsáid i Python le haghaidh iarrataí HTTP: PyCurl, Requests, HTTPX, agus AIOHTTP. Tá a láidreachtaí agus a laigí féin ag gach ceann acu. Seo comparáid chun cabhrú leat an uirlis cheart a roghnú do do chuid riachtanas:
| Gné | PycURL | Requests | HTTPX | AIOHTTP |
|---|---|---|---|---|
| Éasca le húsáid | Measartha | An-éasca | Éasca | Measartha |
| Feidhmíocht | Ard | Measartha | Ard | Ard |
| Tacaíocht Asyncrónach | Níl | Níl | Tá | Tá |
| Sruthú | Tá | Teoranta | Tá | Tá |
| Tacaíocht Prótacail | Fairsing (tacaíonn le go leor prótacail) | HTTP/HTTPS | HTTP/HTTPS, HTTP/2, WebSockets | HTTP/HTTPS, WebSockets |
Bainfidh úsáideoirí ardleibhéil taitneamh as na rialuithe saincheaptha a thugtar le horduithe HTTP; sáróidh PycURL a n-ionchais maidir le feidhmíocht. Ar an lámh eile, tá Requests agus HTTPX níos oiriúnaí do chásanna níos simplí agus níos iomasach. Seasann AIOHTTP amach maidir le tascanna asyncrónacha a láimhseáil, ag soláthar uirlisí éifeachtacha chun iarrataí asyncrónacha a bhainistiú.
Mar a fheiceann tú, féadfaidh do rogha athrú ag brath ar scóip an tionscadail – solúbthacht i gcoinne luas. I gcomhthéacsanna casta, seasann PycURL amach mar an rogha is fearr, mura bhfuil sé an t-aon rogha.
Má tá feidhmíocht agus rialú íseal-leibhéil tábhachtach duit agus iarrataí HTTP á ndéanamh agat, is rogha láidir é PycURL. Cé nach é an bealach is éasca le tosú é cURL a úsáid i Python, osclaíonn sé cumais chumhachtacha a bhíonn ceilte go minic ag leabharlanna níos abstracaí. Ó scrapáil ghréasáin agus láimhseáil XML go bainistiú ceannteidil saincheaptha agus fianáin, láimhseálann PycURL gach rud le cruinneas. Mar sin féin, le haghaidh tascanna níos simplí, sreafaí oibre asyncrónacha, nó éascaíocht úsáide, b'fhéidir go mbeidh Requests, HTTPX, agus AIOHTTP níos oiriúnaí.
Tuairimí: 0