РЕДАКТИРОВАТЬ: код работает сейчас, проблема была связана с не-ASCII символом '\ xe2', решаемым путем объявления:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
Я обратился за помощью PEP-263 .
Я вхожу в инстаграм, используя запросы с использованием этого кода:
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
number подписчиков и постов. У меня есть этот код, который дает информацию определенного c пользователя.
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}')
Но я хочу, чтобы отображалась информация о зарегистрированном пользователе, а не указанная c учетная запись. Как бы я go об этом?