2017-10-10 70 views
1

我遇到了一个问题,我在获取'k'缩写时,刮掉了一些Instagram追随者而不是实际数量。如何使用python获得实际的Instagram关注者数量而不是'k'

import requests, os, time, sys 
from bs4 import BeautifulSoup 
import pandas as pd 

def insta_info(account_name): 
    html = requests.get('https://www.instagram.com/%s/'%(account_name)) 
    soup = BeautifulSoup(html.text, 'lxml') 
    data = soup.find_all('meta', attrs={'property':'og:description'}) 
    text = data[0].get('content').split() 
    user = '%s %s %s' % (text[-3], text[-2], text[-1]) 
    followers = text[0] 
    following = text[2] 
    lst = [] 
    lst.append(followers) 
    lst.append(following) 
    return lst 

kellz = insta_info(kellz_ocho) 
print(kellz) 

这将返回:

[14.2k, 608] 

当我想它返回:

[14241, 608] 

有没有办法做到这一点?我没有写上面的代码,而是在网上找到它并实现它。因此,我不确定它是如何工作的。请注意,我想刮掉的帐户是公开的。

谢谢!

+0

为什么'14.2k' =='14241'而不是'14200'? – MooingRawr

+0

kellz_ocho是14,241的追随者的真实数量。然而,在instagram上,当您拥有超过9,999个关注者时,它将用“.k”替换逗号后面的数字。因此,无论是14200,14210还是14241,它显示为14.2k。 – user53558

回答

0

您提供的代码绝对不是正确的方法。请不要使用它。

正如你可以从这个链接看到:https://www.instagram.com/developer/endpoints/users/获取用户信息是非常简单的。如果您不想编写代码进行身份验证,您甚至可以从此处获取您的访问令牌:http://instagram.pixelunion.net/

+0

虽然这很有帮助,但我需要通过python脚本来完成,因为它是一个自动化的过程,可以与其他东西混合。你有没有任何使用python的链接方法的例子? – user53558

0

为了得到你想要的东西,你需要结合使用硒与BeautifulSoup,因为在页面源代码中没有这种东西,你正在寻找meta标签;相反,唯一可用的东西就是你已经拥有的东西。试试这个:

from bs4 import BeautifulSoup ; from selenium import webdriver 

driver = webdriver.Chrome() 
driver.get("https://www.instagram.com/kellz_ocho/") 
soup = BeautifulSoup(driver.page_source,"html.parser") 
driver.quit() 

for title in soup.select("._h9luf"): 
    posts = title.select("._fd86t")[0].text 
    follower = title.select("._fd86t")[1]['title'] 
    following = title.select("._fd86t")[2].text 
    print("Posts: {}\nFollower: {}\nFollowing: {}".format(posts,follower,following)) 

结果:

Posts: 59 
Follower: 14,253 
Following: 608 

顺便说一句,跟随状态已经改变。

+0

类名'._fd86t''._h9luf',会改变,它的随机生成,尝试不同的用户名,它会不同。 – krisrak

+0

@krisrak,真的!你怎么知道的?发布答案之前,我至少经历了10个名字?它们看起来很奇怪,但不是随机生成的。你错了。 – SIM

0

这应该工作。基本上,附加代码检查'k',如果有'k'则将剩余部分乘以1000

import requests, os, time, sys 
from bs4 import BeautifulSoup 
import pandas as pd 

def insta_info(account_name): 
    html = requests.get('https://www.instagram.com/%s/'%(account_name)) 
    soup = BeautifulSoup(html.text, 'lxml') 
    data = soup.find_all('meta', attrs={'property':'og:description'}) 
    text = data[0].get('content').split() 
    user = '%s %s %s' % (text[-3], text[-2], text[-1]) 
    followers = text[0] 
    if followers[-1] == 'K': 
     followers = int(float(followers[:-1].encode('UTF-8')) * 1000) 
    else: 
     followers = int(float(followers.encode('UTF-8'))) 
    following = text[2] 
    if following[-1] == 'K': 
     following = int(float(following[:-1].encode('UTF-8')) * 1000) 
    else: 
     following = int(float(following.encode('UTF-8'))) 
    lst = [] 
    lst.append(followers) 
    lst.append(following) 
    return lst 

kellz = insta_info(kellz_ocho) 
print(kellz) 
相关问题