Как найти соответствующие хэштеги Instagram для ключевого слова поиска, используя Python? - PullRequest
0 голосов
/ 19 июня 2019

Я пытаюсь анализировать тенденции на основе заданного списка ключевых слов. Ключевые слова: кокос, авокадо и масло. Я хотел бы создать скрипт, который использует ключевые слова, чтобы дать мне связанные хэштеги (так что для кокоса это будет #coconuttree, #coconutwax и т. Д.). Я пытался использовать instabot: https://github.com/instabot-py/instabot.py.

Я перешел по следующей ссылке, по которой человек в основном находит соответствующие хэштеги в посте Instagram. Поэтому необходимо изменить следующий код, чтобы не использовать запись в Instagram в качестве источника хэштегов, а ключевое слово в качестве самого поиска. Вот код от другого человека:

from selenium import webdriver
from bs4 import BeautifulSoup
import pandas as pd
import datetime


driver = webdriver.Chrome()

# Extract description of a post from Instagram link
driver.get('https://www.instagram.com/p/Bx5KlFwH--5/')
soup = BeautifulSoup(driver.page_source,"lxml")
desc = " "

for item in soup.findAll('a'):
    desc= desc + " " + str(item.string)

# Extract tag list from Instagram post description
taglist = desc.split()
taglist = [x for x in taglist if x.startswith('#')]
index = 0
while index < len(taglist):
    taglist[index] = taglist[index].strip('#')
    index += 1

# (OR) Copy-paste your tag list manually here
#taglist = ['art', 'instaart', 'iblackwork']

print(taglist)

# Define dataframe to store hashtag information
tag_df  = pd.DataFrame(columns = ['Hashtag', 'Number of Posts', 'Posting Freq (mins)'])

# Loop over each hashtag to extract information
for tag in taglist:

    driver.get('https://www.instagram.com/explore/tags/'+str(tag))
    soup = BeautifulSoup(driver.page_source,"lxml")

    # Extract current hashtag name
    tagname = tag
    # Extract total number of posts in this hashtag
    # NOTE: Class name may change in the website code
    # Get the latest class name by inspecting web code
    nposts = soup.find('span', {'class': 'g47SY'}).text

    # Extract all post links from 'explore tags' page
    # Needed to extract post frequency of recent posts
    myli = []
    for a in soup.find_all('a', href=True):
        myli.append(a['href'])

    # Keep link of only 1st and 9th most recent post 
    newmyli = [x for x in myli if x.startswith('/p/')]
    del newmyli[:9]
    del newmyli[9:]
    del newmyli[1:8]

    timediff = []

    # Extract the posting time of 1st and 9th most recent post for a tag
    for j in range(len(newmyli)):
        driver.get('https://www.instagram.com'+str(newmyli[j]))
        soup = BeautifulSoup(driver.page_source,"lxml")

        for i in soup.findAll('time'):
            if i.has_attr('datetime'):
                timediff.append(i['datetime'])
                #print(i['datetime'])

    # Calculate time difference between posts
    # For obtaining posting frequency
    datetimeFormat = '%Y-%m-%dT%H:%M:%S.%fZ'
    diff = datetime.datetime.strptime(timediff[0], datetimeFormat)\
        - datetime.datetime.strptime(timediff[1], datetimeFormat)
    pfreq= int(diff.total_seconds()/(9*60))

    # Add hashtag info to dataframe
    tag_df.loc[len(tag_df)] = [tagname, nposts, pfreq]

driver.quit()

# Check the final dataframe
print(tag_df)

# CSV output for hashtag analysis
tag_df.to_csv('hashtag_list.csv')

Результаты должны быть такими же, как в коде, поэтому кадр данных с 3 столбцами с хэштегом, количеством сообщений и частотой отправки сообщений. Я думаю, что для каждого ключевого слова должно хватить 5 связанных хэштегов. Я благодарю вас за ваше время.

...