Seasann Python mar rogha is fearr le haghaidh scríobadh gréasáin mar gheall ar a leabharlanna láidre agus a chomhréir dhíreach. San alt seo, déanfaimid iniúchadh ar na bunphrionsabail a bhaineann le scríobadh gréasáin agus treoir a thabhairt duit trí do thimpeallacht Python a bhunú chun do chéad scraper gréasáin a chruthú. Tabharfaimid isteach tú do phríomh -leabharlanna Python a oireann do thascanna scríobtha, lena n -áirítear anraith álainn, drámadóir, agus LXML.
Soláthraíonn Python roinnt leabharlanna chun scríobadh gréasáin a dhéanamh níos éasca. Seo cuid de na cinn is coitianta a úsáidtear:
Is prótacal ciseal iarratais é HTTP (Prótacal Aistrithe Hypertext) chun sonraí a aistriú ar fud an ghréasáin. Clóscríobh tú URL sa bhrabhsálaí, agus gineann sé iarratas HTTP agus cuireann sé chuig an bhfreastalaí gréasáin é. Ansin cuireann an freastalaí gréasáin an freagra HTTP ar ais chuig an mbrabhsálaí a thugann sé duit mar leathanach HTML. Le haghaidh scríobadh gréasáin, ní mór duit an próiseas seo a aithris agus iarratais HTTP a ghiniúint ó do script chun ábhar HTTP na leathanach gréasáin a fháil go clárúil.
Ar dtús, cinntigh go bhfuil python suiteáilte agat ar do chóras. Is féidir leat é a íoslódáil ó shuíomh gréasáin oifigiúil Python.
Cuidíonn timpeallacht fhíorúil le spleáchais a bhainistiú. Bain úsáid as na horduithe seo chun timpeallacht fhíorúil a chruthú agus a ghníomhachtú:
python -m venv scraping_env
source scraping_env/bin/activate
Ansin, suiteáil na pacáistí riachtanacha ag úsáid na n -orduithe seo a leanas:
pip install requests
pip install beautifulsoup4
pip install lxml
Tosóimid le scraper gréasáin simplí ag baint úsáide as an iarraidh chun ábhar statach HTML a scrape.
Is é an cineál iarratais HTTP an t -iarratas GET, a úsáidtear chun sonraí a fháil ó URL sonraithe. Seo sampla bunúsach de conas iarratas GET a dhéanamh chuig http://example.com.
import requests
url = 'http://example.com'
response = requests.get(url)
Soláthraíonn an Leabharlann Iarrataí roinnt bealaí chun an freagra a láimhseáil agus a phróiseáil:
Seiceáil Cód Stádas: Cinntigh gur éirigh leis an iarratas.
if response.status_code == 200:
print('Request was successful!')
else:
print('Request failed with status code:', response.status_code)
Ábhar a Bhaint Amach: Bain an téacs nó an t -ábhar JSON as an bhfreagra.
# Faigh ábhar freagartha mar théacs
page_content = response.text
print(page_content)
# Faigh Ábhar Freagartha mar JSON (má tá an freagra i bhformáid JSON)
json_content = response.json()
print(json_content)
D'fhéadfadh earráidí HTTP agus líonra tarlú nuair nach féidir acmhainn a bhaint amach, iarratas a chuirtear in iúl, nó má fhilleann an freastalaí stádas HTTP earráid (m.sh. 404 nach bhfuarthas, 500 earráid freastalaí inmheánacha). Is féidir linn na rudaí eisceachta a ardaíodh trí iarratais a úsáid chun na cásanna seo a láimhseáil.
import requests
url = 'http://example.com'
try:
response = requests.get(url, timeout=10) # Set a timeout for the request
response.raise_for_status() # Raises an HTTPError for bad responses
except requests.exceptions.HTTPError as http_err:
print(f'HTTP error occurred: {http_err}')
except requests.exceptions.ConnectionError:
print('Failed to connect to the server.')
except requests.exceptions.Timeout:
print('The request timed out.')
except requests.exceptions.RequestException as req_err:
print(f'Request error: {req_err}')
else:
print('Request was successful!')
Le haghaidh scríobadh gréasáin, is minic a chaithfimid sonraí a bhaint as an ábhar HTML. Labhróidh an chuid seo faoi conas sonraí a aimsiú agus a bhaint as eilimintí HTML le roinnt leabharlanna cosúil le anraith álainn nó LXML.
Is é HTML (HyperText Markup Language) an teanga marcála caighdeánach chun leathanaigh ghréasáin a chruthú. Tá sé comhdhéanta d'eilimintí neadaithe a léirítear le clibeanna, ar nós <div>, <p>, <a>, srl. Is féidir le gach clib tréithe a bheith aige agus téacs, clibeanna eile, nó an dá rud a áireamh.
Soláthraíonn roghnóirí XPath agus CSS bealach ildánach chun eilimintí HTML a roghnú bunaithe ar a gcuid tréithe nó a seasamh sa doiciméad.
Nuair a bhíonn scríobadh gréasáin, is minic a éilíonn sonraí sonracha a bhaint as leathanaigh ghréasáin na roghnóirí ceart XPath nó CSS a aithint chun díriú ar ghnéithe HTML. Seo an chaoi ar féidir leat na roghnóirí seo a fháil go héifeachtach:
Tagann an chuid is mó de na brabhsálaithe gréasáin nua-aimseartha le huirlisí forbróra ionsuite a ligeann duit iniúchadh a dhéanamh ar struchtúr HTML na leathanach gréasáin. Seo treoir céim ar chéim ar conas na huirlisí seo a úsáid:
XPath: /html/body/div/h1
CSS Selector: body > div > h1
Is leabharlann Python é anraith álainn chun doiciméid HTML agus XML a pharsáil. Soláthraíonn sé modhanna agus tréithe simplí chun nascleanúint a dhéanamh agus cuardach a dhéanamh tríd an struchtúr HTML.
from bs4 import BeautifulSoup
import requests
# URL an leathanach gréasáin chun scrape a dhéanamh
url = 'https://example.com'
# Seol iarratas http Get chuig an URL
response = requests.get(url)
# Parse an t -ábhar html den fhreagra ag baint úsáide as anraith álainn
soup = BeautifulSoup(response.content, 'html.parser')
# Úsáid an roghnóir CSS chun gach clib <h1> a aimsiú atá laistigh de chlibeanna <div> atá ina leanaí díreacha de chlib <body>.
h1_tags = soup.select('body > div > h1')
# Déan athrá ar an liosta de na clibeanna <h1> a aimsíodh agus priontáil a n-ábhar téacs.
for tag in h1_tags:
print(tag.text)
Tarlaíonn earráidí parsála nuair nach bhfuil an struchtúr HTML nó XML mar a bhíothas ag súil leis, rud a chruthaíonn saincheisteanna maidir le eastóscadh sonraí. Is féidir iad seo a bhainistiú trí eisceachtaí a láimhseáil mar AttributeError.
from bs4 import BeautifulSoup
import requests
# URL an leathanach gréasáin chun scrape a dhéanamh
url = 'https://example.com'
# Seol iarratas http Get chuig an URL
response = requests.get(url)
try:
# Parse an t -ábhar html den fhreagra ag baint úsáide as anraith álainn
soup = BeautifulSoup(response.content, 'html.parser')
# Úsáid an roghnóir CSS chun gach clib <h1> a aimsiú atá laistigh de chlibeanna <div> atá ina leanaí díreacha de chlib <body>.
h1_tags = soup.select('body > div > h1')
# Déan athrá ar an liosta de na clibeanna <h1> a aimsíodh agus priontáil a n-ábhar téacs.
for tag in h1_tags:
print(tag.text)
except AttributeError as attr_err:
# Cásanna a láimhseáil ina bhféadfadh tréitheall a bheith ann (m.sh., más é an freagra.content aon cheann)
print(f'Attribute error occurred: {attr_err}')
except Exception as parse_err:
# Aon eisceachtaí eile a d'fhéadfadh tarlú le linn an pharsála a láimhseáil
print(f'Error while parsing HTML: {parse_err}')
Chomh maith le anraith álainn, is é LXML leabharlann eile a bhfuil tóir air chun doiciméid HTML agus XML a pharsáil i Python. Cé go ndíríonn Beautifulsoup ar chomhéadan áisiúil a sholáthar chun sonraí parsáilte a stiúradh agus a láimhseáil, tá LXML ar eolas mar gheall ar a luas agus a sholúbthacht, rud a chiallaíonn gur rogha is fearr é le haghaidh tascanna atá ríthábhachtach do fheidhmíocht.
from lxml.html import fromstring
import requests
# URL an leathanach gréasáin chun scrape a dhéanamh
url = 'https://example.com'
# Seol iarratas http Get chuig an URL
response = requests.get(url)
# Ábhar HTML an fhreagra a pharsáil ag baint úsáide as modh LXML ó mhodh LXML
parser = fromstring(response.text)
# Úsáid XPath chun ábhar téacs an chéad chlibe <h1> a aimsiú atá laistigh de chlib <div>, atá ina leanbh díreach de chlib <body>.
title = parser.xpath('/html/body/div/h1/text()')[0]
# Priontáil an teideal
print(title)
Cosúil le anraith álainn, ceadaíonn LXML duit earráidí parsála a láimhseáil go galánta trí eisceachtaí a ghabháil mar LXML.ETREE.XMLSYNNAXERROR.
from lxml.html import fromstring
from lxml import etree
import requests
# URL an leathanach gréasáin chun scrape a dhéanamh
url = 'https://example.com'
# Seol iarratas http Get chuig an URL
response = requests.get(url)
try:
# Ábhar HTML an fhreagra a pharsáil ag baint úsáide as modh LXML ó mhodh LXML
parser = fromstring(response.text)
# Úsáid XPath chun ábhar téacs an chéad chlibe <h1> a aimsiú atá laistigh de chlib <div>, atá ina leanbh díreach de chlib <body>.
title = parser.xpath('/html/body/div/h1/text()')[0]
# Priontáil an teideal
print(title)
except IndexError:
# Láimhseáil an cás nuair nach gcuireann an cheist XPath aon torthaí ar ais
print('No <h1> tag found in the specified location.')
except etree.XMLSyntaxError as parse_err:
# Earráidí comhréir XML a láimhseáil le linn parsála
print(f'Error while parsing HTML: {parse_err}')
except Exception as e:
# Aon eisceachtaí eile a láimhseáil
print(f'An unexpected error occurred: {e}')
Nuair a bheidh sonraí ó eilimintí HTML bainte amach agat go rathúil, is é an chéad chéim eile na sonraí seo a shábháil. Soláthraíonn Python roinnt roghanna chun sonraí scríobtha a shábháil, lena n -áirítear coigilt do chomhaid CSV, comhaid JSON, agus bunachair shonraí. Seo forbhreathnú ar conas sonraí eastósctha a shábháil ag baint úsáide as formáidí éagsúla:
Is formáid shimplí agus a úsáidtear go forleathan é CSV (luachanna coma-scartha) chun sonraí táblaí a stóráil. Mar gheall ar an modúl CSV i Python tá sé éasca sonraí a scríobh chuig comhaid CSV.
import csv
# Sonraí samplacha
data = {
'title': 'Example Title',
'paragraphs': ['Paragraph 1', 'Paragraph 2', 'Paragraph 3']
}
# Sábháil sonraí chuig comhad CSV
with open('scraped_data.csv', mode='w', newline='', encoding='utf-8') as file:
writer = csv.writer(file)
writer.writerow(['Title', 'Paragraph'])
for paragraph in data['paragraphs']:
writer.writerow([data['title'], paragraph])
print('Data saved to scraped_data.csv')
Is formáid éadrom idir-idirthréimhseach é JSON (nodaireacht réad JavaScript) atá éasca le léamh agus le scríobh. Soláthraíonn an modúl JSON i Python modhanna chun sonraí a shábháil i bhformáid JSON.
import json
# Sonraí samplacha
data = {
'title': 'Example Title',
'paragraphs': ['Paragraph 1', 'Paragraph 2', 'Paragraph 3']
}
# Sábháil sonraí chuig comhad JSON
with open('scraped_data.json', mode='w', encoding='utf-8') as file:
json.dump(data, file, ensure_ascii=False, indent=4)
print('Data saved to scraped_data.json')
Is uirlis chumhachtach é an Playwright chun ábhar dinimiciúil a scríobadh agus chun idirghníomhú le heilimintí gréasáin. Is féidir leis láithreáin ghréasáin JavaScript-trom a láimhseáil nach féidir le parsálaithe statacha HTML a dhéanamh.
Suiteáil Playwright agus é a chur ar bun:
pip install playwright
playwright install
Ceadaíonn an Playwright duit idirghníomhú le heilimintí gréasáin cosúil le foirmeacha a líonadh agus cnaipí a chliceáil. Is féidir leis fanacht le hiarratais AJAX a chomhlánú sula dtéann sé ar aghaidh, rud a chiallaíonn go bhfuil sé oiriúnach chun ábhar dinimiciúil a scríobadh.
Déanann an cód a chuirtear ar fáil scríobadh gréasáin ar leathanach táirge Amazon ag baint úsáide as Playwright agus LXML. I dtosach báire, allmhairítear na modúil riachtanacha. Sainmhínítear feidhm reatha chun an loighic scríobtha a chuimsiú. Tosaíonn an fheidhm trí fhreastalaí seachfhreastalaí a chur ar bun agus cás nua brabhsálaí a sheoladh leis an seachvótálaí agus i mód neamh-cheann, ag ligean dúinn breathnú ar ghníomhartha an bhrabhsálaí. Laistigh de chomhthéacs an bhrabhsálaí, osclaítear leathanach nua agus téann sé chuig URL táirge sonraithe Amazon, le tréimhse ama de 60 soicind chun a chinntiú go mbeidh an leathanach go hiomlán ualaí.
Idirghníomhaíonn an script ansin leis an leathanach chun stíl táirge ar leith a roghnú ó roghchlár anuas agus rogha táirge trí locators agus meaitseáil téacs a úsáid. Tar éis a chinntiú go bhfuil na hidirghníomhaíochtaí seo críochnaithe agus go bhfuil an leathanach luchtaithe go hiomlán arís, gabhadh ábhar HTML an leathanaigh.
Déantar an t -ábhar HTML a pharsáil ansin ag baint úsáide as modh LXML ó LXML chun crann eilimint a chruthú. Úsáidtear ceist XPath chun ábhar téacs an teidil táirge a bhaint as gné ar leith leis an ID ProductTitle. Cuimsíonn an script láimhseáil earráide chun cásanna a bhainistiú nach bhfilleann an cheist XPath torthaí, áit a bhfuil earráidí comhréir XML le linn parsála, nó aon eisceachtaí gan choinne eile. Mar fhocal scoir, tá teideal táirge eastósctha tlxml'she priontáilte, agus dúntar comhthéacs an bhrabhsálaí agus an brabhsálaí chun deireadh a chur leis an seisiún.
Déantar an fheidhm reatha a fhorghníomhú laistigh de sheisiún drámadóra a thosaigh Sync_Playwright, ag cinntiú go ndéantar an próiseas iomlán a bhainistiú agus a fhorghníomhú i dtimpeallacht rialaithe. Cinntíonn an struchtúr seo stóinseacht agus athléimneacht earráide agus an tasc scríobtha gréasáin á dhéanamh aige.
from playwright.sync_api import Playwright, sync_playwright
from lxml.html import fromstring, etree
def run(playwright: Playwright) -> None:
# Sainmhínigh an seachfhreastalaí
proxy = {"server": "https://IP:PORT", "username": "LOGIN", "password": "PASSWORD"}
# Seoladh cás brabhsálaí nua leis an seachvótálaí sonraithe agus i mód neamh-cheann gan chead
browser = playwright.chromium.launch(
headless=False,
proxy=proxy,
slow_mo=50,
args=['--ignore-certificate-errors'],
)
# Comhthéacs Brabhsálaí Nua a chruthú
context = browser.new_context(ignore_https_errors=True)
# Oscail leathanach nua i gcomhthéacs an bhrabhsálaí
page = context.new_page()
# Téigh go dtí an leathanach táirge sonraithe Amazon
page.goto(
"https://www.amazon.com/A315-24P-R7VH-Display-Quad-Core-Processor-Graphics/dp/B0BS4BP8FB/",
timeout=10000,
)
# Fan go mbeidh an leathanach á luchtú go hiomlán
page.wait_for_load_state("load")
# Roghnaigh stíl táirge ar leith ón roghchlár anuas
page.locator("#dropdown_selected_style_name").click()
# Roghnaigh rogha táirge ar leith
page.click('//*[@id="native_dropdown_selected_style_name_1"]')
page.wait_for_load_state("load")
# Faigh ábhar HTML an leathanaigh luchtaithe
html_content = page.content()
try:
# Parse an t -ábhar HTML ag baint úsáide as modh LXML's ó mhodh LXML
parser = fromstring(html_content)
# Úsáid xpath chun ábhar téacs teidil an táirge a bhaint amach
product_title = parser.xpath('//span[@id="productTitle"]/text()')[0].strip()
# Priontáil an teideal táirge eastósctha
print({"Product Title": product_title})
except IndexError:
# Láimhseáil an cás nuair nach gcuireann an cheist XPath aon torthaí ar ais
print('Product title not found in the specified location.')
except etree.XMLSyntaxError as parse_err:
# Earráidí comhréir XML a láimhseáil le linn parsála
print(f'Error while parsing HTML: {parse_err}')
except Exception as e:
# Aon eisceachtaí eile a láimhseáil
print(f'An unexpected error occurred: {e}')
# Dún comhthéacs an bhrabhsálaí agus an brabhsálaí
context.close()
browser.close()
# Bain úsáid as sync_playwright chun an seisiún Playwright a thosú agus an script a rith
with sync_playwright() as playwright:
run(playwright)
Is modh cumhachtach é scríobadh gréasáin le Python chun sonraí a bhaint as láithreáin ghréasáin. Éascaíonn na huirlisí a phléigh eastóscadh, próiseáil agus stóráil sonraí gréasáin chun críocha éagsúla. Sa phróiseas seo, tá sé ríthábhachtach úsáid freastalaithe seachfhreastalaí a úsáid chun seoltaí IP a mhalartú agus moill a chur i bhfeidhm idir iarratais chun bloic timpeall a dhéanamh. Tá anraith álainn so-úsáidte do thosaitheoirí, agus tá LXML oiriúnach chun tacair shonraí mhóra a láimhseáil mar gheall ar a éifeachtúlacht. Le haghaidh riachtanais scríobtha níos airde, go háirithe le láithreáin ghréasáin JavaScript atá luchtaithe go dinimiciúil, tá an Playwright an -éifeachtach.
Tuairimí: 0