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.
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
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í.
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ú:
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
Ó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)
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ú:
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,
}
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ú:
# 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)
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)
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