I saol an lae inniu, is féidir le sonraí a bhaint as ardáin shóisialta ar líne ar nós IMDB a bheith ina bhóthar éifeachtach chun faisnéis a bhfuil géarghá le scannáin a bhailiú chun críocha taighde nó taitneamhachta. Sa rang teagaisc seo, beimid ag siúl trí na 250 scannán is fearr ar IMDB a scríobadh ag baint úsáide as sonraí Python agus sliocht mar theidil scannáin, achoimrí scannáin, rátálacha, seánraí, agus níos mó.
Agus láithreáin ghréasáin cosúil le IMDB á scríobadh, tá sé ríthábhachtach iompar fíor -úsáideora a ionsamhlú chun an baol braite a íoslaghdú agus chun aisghabháil sonraí rathúla a chinntiú. Seo roinnt straitéisí is féidir a úsáid:
Maidir leis an rang teagaisc seo, bainfimid úsáid as leabharlann iarratais Python chun an t -ábhar gréasáin a íoslódáil, LXML chun HTML a pharsáil, agus go roghnach, Leabharlann JSON chun sonraí formáidithe a láimhseáil nuair is gá. Ar an gcéad dul síos, suiteáil na leabharlanna riachtanacha.
Sula dtosaíonn tú, ní mór duit na leabharlanna Python riachtanacha a shuiteáil. Rith an t -ordú seo a leanas i do chríochfort chun iad a shuiteáil:
pip install requests lxml
Bainfear úsáid as na leabharlanna seo chun iarratais HTTP a dhéanamh, ábhar HTML a pharsáil, agus na sonraí eastósctha a phróiseáil.
Chun ár n -iarratais a dhéanamh cosúil leo siúd ó bhrabhsálaí gréasáin fíor, tá sé ríthábhachtach na ceanntásca HTTP a bhunú dá réir. Seo sampla den chaoi a bhféadfá na ceanntásca seo a chumrú i do script:
import requests
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': 'no-cache',
'dnt': '1', # Ná déan ceanntásc a rianú
'pragma': 'no-cache',
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'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/129.0.0.0 Safari/537.36',
}
response = requests.get('https://www.imdb.com/chart/top/', headers=headers)
Tá seachvótálaithe úsáideach le haghaidh scríobadh mórscála. Cabhraíonn siad leat gan bac a chur ar do chuid iarrataí a dháileadh ar fud IPanna iolracha. Seo an chaoi ar féidir leat seachfhreastalaí a chur san áireamh:
proxies = {
"http": "http://your_proxy_server",
"https": "https://your_proxy_server"
}
response = requests.get('https://www.imdb.com/chart/top/', headers=headers, proxies=proxies)
Cuir na sonraí seachfhreastalaí iarbhír in ionad "your_proxy_server" a bhfuil rochtain agat air. Cinntíonn sé seo nach bhfuil do sheoladh IP nochta, agus cuidíonn sé le gan bac a chur air.
Tar éis an t -ábhar leathanach gréasáin a fháil, ní mór dúinn é a pharsáil chun sonraí scannáin a bhaint amach. Bainfimid úsáid as LXML chun an HTML agus JSON a pharsáil chun na sonraí struchtúrtha a láimhseáil:
from lxml.html import fromstring
import json
# Parse an freagra HTML
parser = fromstring(response.text)
# Sliocht na Sonraí JSON-LD (Sonraí Struchtúrtha) ón gClib Script
raw_data = parser.xpath('//script[@type="application/ld+json"]/text()')[0]
json_data = json.loads(raw_data)
# Anois tá sonraí scannáin struchtúrtha againn i bhformáid json
Cuimsíonn an leathanach 250 IMDB sonraí struchtúrtha atá leabaithe sa HTML, ar féidir rochtain a fháil orthu go héasca trí XPath a úsáid agus a pharsáil mar JSON. Bainfimid sonraí scannáin amach mar ainm, tuairisc, rátálacha, seánraí, agus níos mó:
movies_details = json_data.get('itemListElement')
# Lúb trí na sonraí scannáin
movies_data = []
for movie in movies_details:
movie_type = movie['item']['@type']
url = movie['item']['url']
name = movie['item']['name']
description = movie['item']['description']
image = movie['item']['image']
bestRating = movie['item']['aggregateRating']['bestRating']
worstRating = movie['item']['aggregateRating']['worstRating']
ratingValue = movie['item']['aggregateRating']['ratingValue']
ratingCount = movie['item']['aggregateRating']['ratingCount']
contentRating = movie['item'].get('contentRating')
genre = movie['item']['genre']
duration = movie['item']['duration']
# Cuir sonraí gach scannáin ar an liosta
movies_data.append({
'movie_type': movie_type,
'url': url,
'name': name,
'description': description,
'image': image,
'bestRating': bestRating,
'worstRating': worstRating,
'ratingValue': ratingValue,
'ratingCount': ratingCount,
'contentRating': contentRating,
'genre': genre,
'duration': duration
})
Nuair a bhaintear na sonraí amach, tá sé tábhachtach é a stóráil i bhformáid atá éasca a anailísiú. Sa chás seo, sábhálfaimid é chuig comhad CSV ag baint úsáide as Leabharlann Pandas:
import pandas as pd
# Tiontaigh liosta na scannáin go dtí fráma sonraí PANDAS
df = pd.DataFrame(movies_data)
# Sábháil na sonraí chuig comhad CSV
df.to_csv('imdb_top_250_movies.csv', index=False)
print("IMDB Top 250 movies data saved to imdb_top_250_movies.csv")
Seo an cód iomlán chun an 250 scannán is fearr atá ag IMDB a scríobadh:
import requests
from lxml.html import fromstring
import json
import pandas as pd
# Sainmhínigh ceanntásca don iarraidh
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': 'no-cache',
'dnt': '1',
'pragma': 'no-cache',
'sec-ch-ua': '"Google Chrome";v="129", "Not=A?Brand";v="8", "Chromium";v="129"',
'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/129.0.0.0 Safari/537.36',
}
# Go roghnach, cuir seachvótálaithe ar bun
proxies = {
"http": "http://your_proxy_server",
"https": "https://your_proxy_server"
}
# Seol an t -iarratas chuig an leathanach 250 barr IMDB
response = requests.get('https://www.imdb.com/chart/top/', headers=headers, proxies=proxies)
# Parse an freagra HTML
parser = fromstring(response.text)
# Sliocht na sonraí JSON-LD
raw_data = parser.xpath('//script[@type="application/ld+json"]/text()')[0]
json_data = json.loads(raw_data)
# Sonraí Scannán Sliocht
movies_details = json_data.get('itemListElement')
movies_data = []
for movie in movies_details:
movie_type = movie['item']['@type']
url = movie['item']['url']
name = movie['item']['name']
description = movie['item']['description']
image = movie['item']['image']
bestRating = movie['item']['aggregateRating']['bestRating']
worstRating = movie['item']['aggregateRating']['worstRating']
ratingValue = movie['item']['aggregateRating']['ratingValue']
ratingCount = movie['item']['aggregateRating']['ratingCount']
contentRating = movie['item'].get('contentRating')
genre = movie['item']['genre']
duration = movie['item']['duration']
movies_data.append({
'movie_type': movie_type,
'url': url,
'name': name,
'description': description,
'image': image,
'bestRating': bestRating,
'worstRating': worstRating,
'ratingValue': ratingValue,
'ratingCount': ratingCount,
'contentRating': contentRating,
'genre': genre,
'duration': duration
})
# Sábháil na sonraí chuig comhad CSV
df = pd.DataFrame(movies_data)
df.to_csv('imdb_top_250_movies.csv', index=False)
print("IMDB Top 250 movies data saved to imdb_top_250_movies.csv")
Sula scríobtar aon láithreán gréasáin, tá sé tábhachtach machnamh a dhéanamh ar shaincheisteanna eiticiúla agus dlí:
Bí i gcónaí ag cuimhneamh ar na rialacha agus bain úsáid as scríobadh gréasáin chun críocha dlisteanacha.
Tuairimí: 0