Conas sonraí Instagram a scrape ag baint úsáide as Python

Tuairimí: 0

Is féidir le rochtain a fháil ar shonraí Instagram a bheith deacair mar gheall ar mheicníochtaí frith-bot éagsúla, riachtanais logála isteach, agus teorainneacha ráta. Mar sin féin, is féidir leat faisnéis úsáideach a bhaint as próifílí poiblí leis na huirlisí agus na teicnící cearta. Tabharfaidh an t -alt seo treoir duit trí conas sonraí úsáideora Instagram a scrape ag baint úsáide as Python trí iarratais API a dhéanamh ar Inneall Instagram, faisnéis a bhaint as na sonraí JSON a cuireadh ar ais, agus é a shábháil i gcomhad JSON.

Na leabharlanna riachtanacha a bhunú

Sula dtéann muid isteach sa chód, déan cinnte go bhfuil na leabharlanna Python riachtanacha suiteáilte agat.


pip install requests python-box

  • Iarrataí: Iarratais HTTP a dhéanamh.
  • Python-Box: Simplíonn sé rochtain ar shonraí trí fhoclóirí a chasadh ina rudaí a cheadaíonn rochtain ar nodaireacht ponc.

Brisfimid an cód ina rannóga éagsúla chun tuiscint níos fearr a fháil, lena n -áirítear an t -iarratas a sheoladh, na sonraí a fháil agus a pharsáil, ag baint úsáide as seachvótálaithe chun braite a sheachaint, agus ag simpliú parsáil JSON leis an leabharlann boscaí.

Céim 1. An t -iarratas API a dhéanamh

Tá an t -éadan de Instagram daingnithe go mór, ach cuireann an t -inneall críochphointí API ar fáil is féidir a úsáid gan fíordheimhniú. Bainfimid úsáid as ceann de na pointí seo amach anseo.

Soláthraíonn an API seo faisnéis mhionsonraithe faoi phróifíl úsáideora, lena n -áirítear a gcur síos, comhaireamh leantóra, agus poist. Déanaimis iniúchadh ar conas sonraí a iarraidh ag baint úsáide as an leabharlann iarratais i Python.

Míniú:

  1. Ceanntásca: Bloic Instagram an chuid is mó de na hiarrataí bot trí anailís a dhéanamh ar cheanntásca iarratais. Tá an x-ig-app-id riachtanach toisc go ndéanann sé aithris ar iarratas a thagann ón aip Instagram féin.
  2. Is ionann an teaghrán gníomhaire úsáideora agus an brabhsálaí a dhéanann an t-iarratas, agus Instagram á chreidiúint gur fíor-úsáideoir é.
  3. Iarratas API Ball: An URL https://i.instagram.com/api/v1/users/web_profile_info/?username={username} Tá sé mar chuid de API Inneall Instagram. Soláthraíonn sé faisnéis mhionsonraithe faoi phróifíl phoiblí.
  4. An freagra JSON a láimhseáil: Bainimid úsáid as freagairt.json () chun an freagra API a thiontú ina réad JSON ar féidir linn faisnéis a pharsáil agus a bhaint as go héasca.

import requests

# Sainmhínigh ceanntásca chun iarratas fíor -bhrabhsálaí a aithris
headers = {
    "x-ig-app-id": "936619743392459",  # Instagram app ID to authenticate the request
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9,ru;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept": "*/*",
}

# An t -ainm úsáideora is mian leat a scríobadh a chur in ionad é seo
username = 'testtest'

# Seol iarratas API chun sonraí próifíle a fháil
response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', headers=headers)
response_json = response.json()  # An freagra a pharsáil ar réad JSON

Céim 2. Proxies a láimhseáil chun teorannú ráta a sheachbhóthar

Ós rud é go gcuireann Instagram srian ar iarratais arís agus arís eile ón seoladh IP céanna, tá sé riachtanach go n-úsáidfí proxies le haghaidh scríobadh mórscála. Cuireann seachvótálaí do chuid iarrataí trí sheoltaí éagsúla IP, ag cuidiú leat braite a sheachaint.

Chun seachfhreastalaí a bhunú, beidh an seoladh IP, uimhir an chalafoirt, agus, más gá, ainm úsáideora agus pasfhocal le haghaidh fíordheimhnithe.


proxies = {
    'http': 'http://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
    'https': 'https://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
}

response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', headers=headers, proxies=proxies)

Céim 3. Parsing JSON a shimpliú le bosca

Filleann API Instagram struchtúr casta JSON neadaithe, a d'fhéadfadh a bheith deacair nascleanúint a dhéanamh trí rochtain thraidisiúnta bunaithe ar fhoclóir a úsáid. Chun parsáil a dhéanamh níos éasca, is féidir linn an leabharlann bhosca a úsáid, a cheadaíonn rochtain a fháil ar shonraí JSON ag baint úsáide as nodaireacht ponc in ionad eochracha foclóireachta.

Míniú:

  1. Bosca: Athraíonn an leabharlann seo foclóir JSON ina rud, rud a ligeann dúinn rochtain a fháil ar pháirceanna atá neadaithe go domhain ag baint úsáide as nodaireacht ponc. Mar shampla, in ionad scríbhneoireachta response_json['data']['user']['full_name'], Is féidir linn scríobh go simplí response_json.data.user.full_name.
  2. Sonraí a bhaint: Déanaimid faisnéis phróifíle úsáideach a bhaint amach mar ainm iomlán, ID, beathaisnéis an úsáideora, cibé an cuntas gnó nó gairmiúil é, stádas fíoraithe, agus comhaireamh leantóra.

from box import Box

response_json = Box(response.json())

# Sonraí Próifíl Úsáideora a bhaint
user_data = {
    'full name': response_json.data.user.full_name,
    'id': response_json.data.user.id,
    'biography': response_json.data.user.biography,
    'business account': response_json.data.user.is_business_account,
    'professional account': response_json.data.user.is_professional_account,
    'category name': response_json.data.user.category_name,
    'is verified': response_json.data.user.is_verified,
    'profile pic url': response_json.data.user.profile_pic_url_hd,
    'followers': response_json.data.user.edge_followed_by.count,
    'following': response_json.data.user.edge_follow.count,
}

Céim 4. Sonraí Físeáin agus Amlíne a Bhaint Amach

Nuair a bhaintear na sonraí próifíle, is féidir linn sonraí a scrape ó amlíne físe an úsáideora agus ó phoist rialta.

Míniú:

  1. Sonraí Físeáin: Baineann an rannóg seo sonraí faoi fhíseáin Instagram an úsáideora, lena n -áirítear an URL Físeáin, Amharc ar Chomhaireamh, Comhaireamh Tráchta, agus fad an fhíseáin.
  2. Amlíne na meáin: Mar an gcéanna, baintear sonraí as amlíne an úsáideora seo, ag gabháil do url meáin an phoist, is maith leis, agus tuairimí.

# Sonraí Físeáin a Shliocht
profile_video_data = []
for element in response_json.data.user.edge_felix_video_timeline.edges:
    video_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'video url': element.node.video_url,
        'view count': element.node.video_view_count,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
        'duration': element.node.video_duration,
    }
    profile_video_data.append(video_data)

# Sliocht Sonraí na Meán Amlíne (Grianghraif agus Físeáin)
profile_timeline_media_data = []
for element in response_json.data.user.edge_owner_to_timeline_media.edges:
    media_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'media url': element.node.display_url,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
    }
    profile_timeline_media_data.append(media_data)

Céim 5. Na sonraí a shábháil ar chomhaid JSON

Nuair a bheidh na sonraí go léir bainte amach agat, is é an chéad chéim eile é a shábháil ar chomhad JSON le haghaidh tuilleadh anailíse nó stórála. Bainimid úsáid as modúl JSON Python chun na sonraí eastósctha a scríobh chuig comhaid JSON. Déanfar gach comhad a fhormáidiú go néata, a bhuíochas leis an bparaiméadar indent = 4, rud a fhágann go bhfuil sé éasca na sonraí a léamh agus a phróiseáil.


import json

# Sábháil sonraí úsáideora chuig comhad JSON
with open(f'{username}_profile_data.json', 'w') as file:
    json.dump(user_data, file, indent=4)

# Sábháil sonraí físe chuig comhad JSON
with open(f'{username}_video_data.json', 'w') as file:
    json.dump(profile_video_data, file, indent=4)

# Sábháil sonraí meán amlíne chuig comhad JSON
with open(f'{username}_timeline_media_data.json', 'w') as file:
    json.dump(profile_timeline_media_data, file, indent=4)

Cód Comhlánaithe

Seo an script iomlán Python a chomhcheanglaíonn na rannóga go léir a pléadh roimhe seo. Scrapálann an cód seo sonraí próifíl úsáideora, sonraí físe, agus sonraí meán amlíne ó Instagram, láimhseálann sé na ceanntásca agus na seachvótálaithe riachtanacha, agus sábhálann sé an fhaisnéis a bhaintear le comhaid JSON.


import requests
from box import Box
import json

# Ceanntásca chun aithris a dhéanamh ar iarratas fíor -bhrabhsálaí chuig API Inneall Instagram
headers = {
    "x-ig-app-id": "936619743392459", 
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36",
    "Accept-Language": "en-US,en;q=0.9,ru;q=0.8",
    "Accept-Encoding": "gzip, deflate, br",
    "Accept": "*/*",
}

# Socraigh seachvótálaí chun teorannú ráta agus braite a sheachaint (roghnach)
proxies = {
    'http': 'http://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
    'https': 'https://<proxy_username>:<proxy_password>@<proxy_ip>:<proxy_port>',
}

# An t -ainm úsáideora Instagram chun scrape a dhéanamh
username = 'testtest'

# Seol iarratas chuig API Inneall Instagram chun sonraí próifíle a fháil
response = requests.get(f'https://i.instagram.com/api/v1/users/web_profile_info/?username={username}', 
                        headers=headers, proxies=proxies)
response_json = Box(response.json())  # An freagra ar réad bosca a thiontú le haghaidh loingseoireachta éasca

# Sonraí Próifíl Úsáideora a bhaint
user_data = {
    'full name': response_json.data.user.full_name,
    'id': response_json.data.user.id,
    'biography': response_json.data.user.biography,
    'business account': response_json.data.user.is_business_account,
    'professional account': response_json.data.user.is_professional_account,
    'category name': response_json.data.user.category_name,
    'is verified': response_json.data.user.is_verified,
    'profile pic url': response_json.data.user.profile_pic_url_hd,
    'followers': response_json.data.user.edge_followed_by.count,
    'following': response_json.data.user.edge_follow.count,
}

# Sliocht sonraí físe a bhaint as amlíne físe an úsáideora
profile_video_data = []
for element in response_json.data.user.edge_felix_video_timeline.edges:
    video_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'video url': element.node.video_url,
        'view count': element.node.video_view_count,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
        'duration': element.node.video_duration,
    }
    profile_video_data.append(video_data)

# Sliocht Sonraí na Meán Amlíne (Grianghraif agus Físeáin)
profile_timeline_media_data = []
for element in response_json.data.user.edge_owner_to_timeline_media.edges:
    media_data = {
        'id': element.node.id,
        'short code': element.node.shortcode,
        'media url': element.node.display_url,
        'comment count': element.node.edge_media_to_comment.count,
        'like count': element.node.edge_liked_by.count,
    }
    profile_timeline_media_data.append(media_data)

# Sábháil sonraí próifíl úsáideora chuig comhad JSON
with open(f'{username}_profile_data.json', 'w') as file:
    json.dump(user_data, file, indent=4)
print(f'saved json: {username}_profile_data.json')

# Sábháil sonraí físe chuig comhad JSON
with open(f'{username}_video_data.json', 'w') as file:
    json.dump(profile_video_data, file, indent=4)
print(f'saved json: {username}_video_data.json')

# Sábháil sonraí meán amlíne chuig comhad JSON
with open(f'{username}_timeline_media_data.json', 'w') as file:
    json.dump(profile_timeline_media_data, file, indent=4)
print(f'saved json: {username}_timeline_media_data.json')

Is féidir sonraí Instagram a scríobadh le Python a dhéanamh tríd an API inneall a chuireann Instagram ar fáil a ghiaráil, rud a chabhraíonn le cuid de na srianta tosaigh a sheachbhóthar. Is céimeanna ríthábhachtacha iad na ceanntásca cearta a úsáid chun iompraíocht an bhrabhsálaí a mhacasamhlú agus chun seachvótálaithe a úsáid chun teorainn a chur le rátaí. Déanann leabharlann na mboscaí an próiseas a shimpliú tuilleadh trí JSON a pharsáil níos iomasach le nodaireacht dot. Sula dtosaíonn tú ag scríobadh Instagram ar scála, cuimhnigh cloí le téarmaí seirbhíse Instagram, agus déan cinnte nach sáraíonn do chuid iarrachtaí scríobtha a bpolasaithe.

Tuairimí:

0 tuairimí