Tá sé tábhachtach íomhánna a scríobadh ó Yahoo Image Search nuair a bhíonn tacair sonraí íomhá á nginiúint. Míníonn an treoir seo conas íomhánna a scrape ó Yahoo Image Search ag baint úsáide as Python chomh maith le leabharlann iarratais i gcomhar le LXML le haghaidh teicnící parsála HTML. Baineann sé freisin le húsáid seachfhreastalaí chun nach n -éireoidh leis na córais bhrath Yahoo bot a bheith gafa.
Chun íomhánna a scrape ó Yahoo Images, beidh na leabharlanna Python seo a leanas de dhíth ort:
Cinntigh go bhfuil na leabharlanna riachtanacha go léir suiteáilte agat. Suiteáil iad ag úsáid Pip:
pip install requests
pip install lxml
Nó ordú amháin a úsáid:
pip install requests lxml
Ar an gcéad dul síos, ní mór dúinn na leabharlanna riachtanacha a allmhairiú dár scraper.
import requests
from lxml import html
Ansin, déanfaimid cuardach ar íomhánna Yahoo.
Anseo sainmhíneoimid ceist chuardaigh mar choileáin agus seolfaimid iarratas GET chuig cuardach íomhánna Yahoo leis na ceanntásca riachtanacha. Tá na ceanntásca iarratais tábhachtach chun iarratas ar bhrabhsálaí a aithris, rud a chabhraíonn le roinnt meicníochtaí braite bot a sheachaint.
#Sainmhínigh ceanntásca chun iarratas ar bhrabhsálaí a aithris
headers = {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "en-IN,en;q=0.9",
"cache-control": "max-age=0",
"dnt": "1",
"priority": "u=0, i",
"sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Linux"',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
}
# Sainmhínigh an cheist cuardaigh
search_query = "puppies"
# Déan iarratas ar an leathanach cuardaigh íomhánna yahoo
response = requests.get(
url=f"https://images.search.yahoo.com/search/images?p={search_query}",
headers=headers
)
Tar éis an freagra a fháil ó Yahoo, ní mór dúinn an HTML a pharsáil chun URLanna íomhá a bhaint. Bainimid úsáid as LXML chun na críche seo.
# Parse an freagra HTML
parser = fromstring(response.text)
# Sliocht URLanna íomhá ag baint úsáide as xpath
images_urls = parser.xpath("//li[contains(@id, 'resitem-')]/a//@src")
Baintear úsáid as feidhm asstring chun an téacs freagartha HTML a pharsáil. Úsáidtear XPath chun URLanna íomhánna a bhaint. Taispeánann an screenshot thíos conas a fuarthas an XPath.
Le liosta na n -URLanna íomhá, ní mór dúinn gach íomhá a íoslódáil anois.
Anseo, déanfaimid lúb tríd an liosta Images_URLS chun an comhaireamh (innéacs) agus an URL (seoladh) a bhaint. Déanfar gach íomhá a íoslódáil ansin trí iarratas GET a sheoladh chuig an URL faoi seach.
# Íoslódáil gach íomhá agus sábháil é i gcomhad
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers)
Ar deireadh, sábhálaimid na híomhánna íoslódáilte chuig an gcóras comhaid áitiúil. Sainmhínímid feidhm download_file a dhéileálann leis an bpróiseas sábhála comhaid.
Tógann an fheidhm seo an comhaireamh (chun ainmneacha uathúla a chruthú) agus an freagra (ina bhfuil na sonraí íomhá). Cinneann sé an síneadh comhaid ón gceanntásc de chineál ábhair agus sábhálann sé an comhad san eolaire ./images/.
def download_file(count, response):
# Faigh an síneadh comhaid ón gceanntásc de chineál ábhair
extension = response.headers.get("Content-Type").split("/")[1]
filename = "./images/" + str(count) + f".{extension}"
# Cruthaigh an t -eolaire mura bhfuil sé ann
os.makedirs(os.path.dirname(filename), exist_ok=True)
# Scríobh an t -ábhar freagartha don chomhad
with open(filename, "wb") as f:
f.write(response.content)
Trí ghlaoch a chur ar an bhfeidhm seo laistigh den lúb, sábhálaimid gach íomhá íoslódáilte:
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers)
download_file(count, response)
Agus sonraí á scríobadh ó Yahoo, tá sé tábhachtach a bheith ar an eolas faoi mheicníochtaí braite bot Yahoo. Baineann Yahoo úsáid as na teicnící seo go príomha chun róbónna uathoibrithe a aithint agus a bhlocáil:
Chun nach gcuirfeadh meicníocht bhrath Yahoo bot bac air, go háirithe nuair a bhíonn iliarrataí á ndéanamh ón IP céanna, bainimid úsáid as seachvótálaithe chun ár seoladh IP a mhaolú.
Tríd ár n -iarratais a ródú trí sheachvótálaithe éagsúla, is féidir linn ár ngníomhaíocht scríobtha a dháileadh ar fud ilsheoltaí IP, agus mar sin laghdaítear an dóchúlacht atá á bhrath.
proxies = {
'http': 'http://USER:PASS@HOST:PORT',
'https': 'http://USER:PASS@HOST:PORT'
}
response = requests.get(url, headers=headers, proxies=proxies, verify=False)
Seo an script iomlán chun íomhánna a scríobadh ó thorthaí cuardaigh íomhánna yahoo ag baint úsáide as seachvótálaithe:
import os
import requests
from lxml.html import fromstring
def download_file(count, response):
"""
Sábhálann ábhar freagra ar chomhad san eolaire ./images/.
Args:
count (int): Aitheantóir uathúil don chomhad.
response (requests.Response): An freagra HTTP ina bhfuil an t -ábhar comhaid.
"""
# Faigh an síneadh comhaid ón gceanntásc de chineál ábhair
extension = response.headers.get("Content-Type").split("/")[1]
filename = "./images/" + str(count) + f".{extension}"
# Cruthaigh an t -eolaire mura bhfuil sé ann
os.makedirs(os.path.dirname(filename), exist_ok=True)
# Scríobh an t -ábhar freagartha don chomhad
with open(filename, "wb") as f:
f.write(response.content)
def main():
"""
An phríomhfheidhm chun íomhánna a chuardach agus iad a íoslódáil.
Feidhmíonn an fheidhm seo na céimeanna seo a leanas:
1. Socraíonn sé na ceanntásca iarratais.
2. Cuardaigh le haghaidh íomhánna de choileáin ar Yahoo.
3. Déanann sé an freagra HTML a pharsáil chun URLanna íomhá a bhaint.
4. Íoslódáil gach íomhá agus sábhálann sé é chuig an eolaire ./images/.
"""
# Sainmhínigh ceanntásca chun iarratas ar bhrabhsálaí a aithris
headers = {
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
"accept-language": "en-IN,en;q=0.9",
"cache-control": "max-age=0",
"dnt": "1",
"priority": "u=0, i",
"sec-ch-ua": '"Google Chrome";v="125", "Chromium";v="125", "Not.A/Brand";v="24"',
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": '"Linux"',
"sec-fetch-dest": "document",
"sec-fetch-mode": "navigate",
"sec-fetch-site": "none",
"sec-fetch-user": "?1",
"upgrade-insecure-requests": "1",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36",
}
# Sainmhínigh seachvótálaithe chun teorannú ráta a sheachbhóthar
proxies = {"http": "http://USER:PASS@HOST:PORT", "https": "http://USER:PASS@HOST:PORT"}
# Sainmhínigh an cheist cuardaigh
search_query = "puppies"
# Déan iarratas ar an leathanach cuardaigh íomhánna yahoo
response = requests.get(
url=f"https://images.search.yahoo.com/search/images?p={search_query}",
headers=headers,
proxies=proxies,
verify=False
)
# Parse an freagra HTML
parser = fromstring(response.text)
# Sliocht URLanna íomhá ag baint úsáide as xpath
images_urls = parser.xpath("//li[contains(@id, 'resitem-')]/a//@src")
# Íoslódáil gach íomhá agus sábháil é i gcomhad
for count, url in enumerate(images_urls):
response = requests.get(url=url, headers=headers, proxies=proxies, verify=False)
download_file(count, response)
if __name__ == "__main__":
main()
Is teicníc chumhachtach é íomhánna a scríobadh ó Yahoo Image Search ag baint úsáide as Python chun tascanna bailithe agus anailíse sonraí a uathoibriú. Trí úsáid a bhaint as an leabharlann iarratais le haghaidh iarrataí HTTP agus an leabharlann LXML le haghaidh parsáil HTML, is féidir leat URLanna íomhá a bhaint go héifeachtach agus na híomhánna a íoslódáil. Cuidíonn ionchorprú seachvótálaithe leat cosc a chur ar thoirmisc IP a bhrath agus a chosc le linn gníomhaíochtaí scríobtha fairsinge.
Tuairimí: 0