编辑:代码现在可以正常工作,问题是与非ASCII字符'\ xe2'有关,通过声明解决:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
我向PEP-263寻求帮助。
我使用以下代码使用请求登录instagram:
import bs4
from bs4 import BeautifulSoup
import json
import re
import requests
BASE_URL = 'https://www.instagram.com/accounts/login/'
LOGIN_URL = BASE_URL + 'ajax/'
headers_list = "Mozilla/5.0 (Windows NT 5.1; rv:41.0) Gecko/20100101"
" Firefox/41.0"
USERNAME = 'myUser'
PASSWD = 'myPassword'
USER_AGENT = headers_list
session = requests.Session()
session.headers = {'user-agent': USER_AGENT}
session.headers.update({'Referer': BASE_URL})
req = session.get(BASE_URL)
soup = BeautifulSoup(req.content, 'html.parser')
body = soup.find('body')
pattern = re.compile('window._sharedData')
script = body.find("script", text=pattern)
script = script.get_text().replace('window._sharedData = ', '')[:-1]
data = json.loads(script)
csrf = data['config'].get('csrf_token')
login_data = {'username': USERNAME, 'password': PASSWD}
session.headers.update({'X-CSRFToken': csrf})
login = session.post(LOGIN_URL, data=login_data, allow_redirects=True)
print(login.content)
# b'{"authenticated": true, "user": true, "userId": "*******", "oneTapPrompt": false, "status": "ok"}'
但是,登录后,我想提取用户信息,例如n
关注者和帖子的数量。我有这段代码可以提供特定用户的信息。
html = requests.get('https://www.instagram.com/USER')
soup = BeautifulSoup(html.text, 'lxml')
item = soup.select_one("meta[property='og:description']")
name = item.find_previous_sibling().get("content").split("•")[0]
followers = item.get("content").split(",")[0]
following = item.get("content").split(",")[1].strip()
print(f'{name}\n{followers}\n{following}')
但是我想要显示的是已记录的用户信息,而不是特定的帐户。我将如何处理?
登录后,您只需访问自己的页面即可。
这种修改应该可以解决问题:
html = requests.get('https://www.instagram.com/'+USERNAME)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句