Как я могу получить описание поста в Instagram? - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь получить описание поста для каждого изображения в Instagram, но я получаю лишь небольшую часть описания. Может кто-нибудь, пожалуйста, помогите мне получить полное описание сообщения pi c?

import requests
from bs4 import BeautifulSoup
from selenium import webdriver

# ---------------- getting hrefs in posts ------------------ #
# Step 1
driver = webdriver.Chrome('/Users/jjcauton/Documents/python/chromedriver')
driver.get('https://www.instagram.com/addict_for_sneakers/')


hrefs = driver.find_elements_by_tag_name('a')
print(hrefs)
hrefs_elem = [elem.get_attribute('href') for elem in hrefs]
hrefs_elem = [href for href in hrefs_elem if '/p/' in href]
print(hrefs_elem)

for href in hrefs_elem:
    driver.get(href)
    page = requests.get(href)
    soup = BeautifulSoup(page.content, 'lxml')
    page_contents = soup.title
    contents = page_contents.get_text()
    print(contents)

Результаты получились так:

Boricua Adicto A Tenis on Instagram: “? Giveaway ?  Win a FREE pair of Adidas Yeezy 350 v2 "Yeshaya" (Winner Picks His or Her Size) by following the simple steps below.  Here’s…”

Boricua Adicto A Tenis on Instagram: “1,2,3,4,5,6,7,8,9 or 10?
#Tecatodetenis”

Boricua Adicto A Tenis on Instagram: “The the future of sneakers trading is here ?  Make money by buying shares, then selling them for more than what you paid ?  Start with only…”

Boricua Adicto A Tenis on Instagram: “What’s your favorite AJ11?”

Boricua Adicto A Tenis on Instagram: “? Giveaway ?  Win a FREE pair of Retro 1 Fearless  by following the simple steps below.  Here’s how you can win?: 1️⃣ Follow:…”

Boricua Adicto A Tenis on Instagram: “1,2,3,4,5,6,7,8,9 or 10?
#Tecatodetenis”

Boricua Adicto A Tenis on Instagram: “Choose One!”

Boricua Adicto A Tenis on Instagram: “?FREE?GIVEAWAY?  Win the ?️red 1️⃣1️⃣ for FREE by following these steps:  Step 1️⃣. Follow them?: @_jsole_ @wallkicksofficial @pr_sneaks23…”

Boricua Adicto A Tenis on Instagram: “What’s your favorite retro 4?”

Boricua Adicto A Tenis on Instagram: “? Giveaway ?  Win a FREE pair of Retro 1 Turbo Green by following the simple steps below.  Here’s how you can win?: 1️⃣ Follow:…”

Boricua Adicto A Tenis on Instagram: “1,2,3,4,5,6,7,8,9 or 10?
#Tecatodetenis”

Boricua Adicto A Tenis on Instagram: “✨LAST CHANCE✨ ☁️CHOOSE YOUR FAVORITE SHOE☁️ ⠀ To Enter Simply: 1️⃣: Like This Picture 2️⃣: Follow  @Luisanglcordova @Hypedseason…”

Как вы можете видеть, это дает только небольшое часть описания сообщения pi c. Мне нужно полное описание. Спасибо!

1 Ответ

1 голос
/ 16 января 2020

Вы смотрите не в тех тегах. Instagram содержит только полный текст постов в теге <script>, поэтому возврат всех тегов <a> вам не поможет. Вам нужно найти тег <script>, который содержит 'edge_media_to_caption'. Тег скрипта довольно длинный, но в нем есть этот бит (взят из учетной записи Instagram / katyperry /):

"edge_media_to_caption": {
                             "edges": [{
                                 "node": {
                                     "text": "Many people wonder how the pyramids were actually built... but me, I am in constant awe and wonder of how such a loving/kind/compassionate/supportive/talented/deeply spiritual/did I mention incredibly good looking/James Bond of a human being can actually exist in the flesh!\n\nThere\u2019s a reason why all animals and children run straight into his arms... It\u2019s his heart, so pure. I love you Orlando Jonathan Blanchard Copeland Bloom. Happiest 43rd year. \u2665\ufe0f\ud83c\udf82\u2660\ufe0f"
                                 }
                             }]
                         },

Используя это, вы можете извлечь свои данные, используя строку [index1: index2], где индексы можно найти с помощью string.find («некоторое значение»)

...