Conas sonraí IMDB a scrape ag baint úsáide as python

Tuairimí: 0

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:

  1. Seachain blocáil IP: Is minic a chuireann láithreáin ghréasáin teorainn le líon na n -iarratas is féidir a dhéanamh as seoladh IP amháin chun scríobadh a chosc. Trí sheachvótálaithe a úsáid, is féidir leat d'iarratais a scaipeadh ar ilsheoltaí IP, ag laghdú an riosca go gcuirfí bac ort.
  2. Cinntigh anaithnideacht: masc na proxies do sheoladh fíor IP, rud a chabhraíonn le do phríobháideacht a chosaint ach a fhágann go bhfuil sé níos deacra do shuíomhanna gréasáin gníomhaíochtaí scríobtha a rianú ar ais chugat.
  3. Cloí le teorainneacha luais: Is féidir le hiarratais a dháileadh trí il-sheachvótálaithe cabhrú le minicíocht do cheisteanna a bhainistiú, fanacht laistigh de theorainneacha ráta an tsuímh ghréasáin agus an dóchúlacht go spreagfaidh sé bearta frith-scrapála.
  4. Seachbhóthar Freastalaí: Is féidir le ceanntásca a ionchorprú a dhéanann aithris ar ghnáth-bhrabhsálaí, ar nós gníomhaire úsáideora, a dhéanamh ar do chuid iarrataí scríobtha a dhéanamh níos cosúla le gnáthiarrataí úsáideora. Féadann sé seo cosc ​​a chur ar an bhfreastalaí do chuid gníomhaíochtaí a bhrath mar amhrasach.

Céim 1: An scraper a ullmhú

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.

Na Leabharlanna a shuiteáil

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.

Cumrú http ceanntásca iarratais

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)

Proxies a bhunú

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.

Céim 2: An Ábhar HTML a pharsáil

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

Céim 3: Sonraí Scannáin a Bhaint Amach

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
    })

Céim 4: Na sonraí a stóráil

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")

Cód iomlán

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")

Breithnithe eiticiúla

Sula scríobtar aon láithreán gréasáin, tá sé tábhachtach machnamh a dhéanamh ar shaincheisteanna eiticiúla agus dlí:

  • Meas ar an robots.txt: Seiceáil comhad robots.txt IMDB chun a fháil amach cad iad na codanna den láithreán gréasáin a cheadaítear le haghaidh scríobtha. Cloí i gcónaí le beartais an tsuímh ghréasáin.
  • Seachain ró -ualú an fhreastalaí: Scrape sonraí go freagrach trí mhinicíocht do chuid iarrataí a theorannú chun ualach neamhriachtanach a sheachaint ar an bhfreastalaí.
  • meas ar théarmaí seirbhíse: Cinntigh nach sáraíonn scríobadh téarmaí seirbhíse IMDB.

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 tuairimí