如何使用python获得实际的Instagram关注者数量而不是'k'
我遇到了一个问题,我在获取'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]
有没有办法做到这一点?我没有写上面的代码,而是在网上找到它并实现它。因此,我不确定它是如何工作的。请注意,我想刮掉的帐户是公开的。
谢谢!
您提供的代码绝对不是正确的方法。请不要使用它。
正如你可以从这个链接看到:https://www.instagram.com/developer/endpoints/users/获取用户信息是非常简单的。如果您不想编写代码进行身份验证,您甚至可以从此处获取您的访问令牌:http://instagram.pixelunion.net/。
虽然这很有帮助,但我需要通过python脚本来完成,因为它是一个自动化的过程,可以与其他东西混合。你有没有任何使用python的链接方法的例子? – user53558
为了得到你想要的东西,你需要结合使用硒与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
顺便说一句,跟随状态已经改变。
这应该工作。基本上,附加代码检查'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)
为什么'14.2k' =='14241'而不是'14200'? – MooingRawr
kellz_ocho是14,241的追随者的真实数量。然而,在instagram上,当您拥有超过9,999个关注者时,它将用“.k”替换逗号后面的数字。因此,无论是14200,14210还是14241,它显示为14.2k。 – user53558