Извлечь данные из ответа json после входа в систему - BS4 - PullRequest
0 голосов
/ 14 февраля 2020

Я пытаюсь вычистить номера телефонов со страницы примера. Они видны только пользователям после входа в систему.

Поэтому я создал систему, которая регистрирует меня на сайте. Похоже, что все работает, но я все еще не могу отобразить номер телефона из ссылки JSON.

Моя система выглядит следующим образом:

import requests
from bs4 import BeautifulSoup
import requests
from lxml import html as html_login
import json

url = 'https://website.pl/viewcount.php?contract=2062550&event=2'
response = requests.get(url)
html = response.content
soup = BeautifulSoup(html, 'html.parser')

#Remember logged in user
session_requests = requests.session()

login_url = "https://website.pl/log_in"
result = session_requests.get(login_url)
tree = html_login.fromstring(result.text)
authenticity_token = list(set(tree.xpath("//input[@name='login[_csrf_token]']/@value")))
payload = {
    "login[login]": "my_user",
    "login[password]": "my_password",
    "login[_csrf_token]": authenticity_token
}

#log in action
result = session_requests.post(
    login_url,
    data = payload,
    headers = dict(referer=login_url)
)

print(result.ok)

print(result.status_code)

print(soup)

Мой код ссылки выглядит следующим образом this {"count":63, "data": "50066677789"} (ничего более, он виден только зарегистрированным пользователям). Но мой результат печати дает это:

True
200

Где я допустил ошибку? Нужно ли использовать какой-либо специальный тег для отображения этого ответа JSON?

1 Ответ

0 голосов
/ 09 марта 2020

код состояния 200 в запросе на вход в систему предполагает, что вы вошли в систему после входа в систему, вам нужно позвонить, чтобы получить api не раньше.

также, если API возвращает json данные, существует метод "json" response.json() обычно после входа в систему вы получаете токен, который необходимо отправить в следующих запросах. Я предлагаю вам открыть сайт с консолью разработчика и посмотреть, как происходит обмен данными с сервером и с него.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...