Хобрук: Ваш путь к мастерству в программировании

Извлечение текста из Javascript с помощью BeautifulSoup для получения количества подписчиков

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

Например, https://www.instagram.com/taylorswift/ и т. д.

Я пытался использовать такие библиотеки, как BeautifulSoup. Однако одна проблема заключается в том, что количество подписчиков находится в типе javascript и содержит много другого текста.

Мой код будет:

>>> from bs4 import BeautifulSoup
>>> import requests
>>> url = "https://www.instagram.com/taylorswift/"
>>> page = requests.get(url)
>>> soup = BeautifulSoup(page.content)
>>> script = soup.select("script") 

Могу я спросить, как получить количество подписчиков в качестве единственного вывода? (т.е. 76,8 м) Я новичок в python и сценариях: / Спасибо.


  • Ну, на самом деле, если вы хотите отказаться от веб-платформы, основанной на Javascript, вам лучше прекратить использовать BeautifulSoup и запустить Selenium. BeautifulSoup просто загружает HTML-страницу, а Selenium — это полноценный фреймворк для имитации браузеров. Я бы рекомендовал Selenium/PhantomJS. 12.05.2016
  • @ErdinEray спасибо за предложение, однако есть ли возможный способ с BeautifulSoup? Я не слишком уверен, является ли Instagram веб-платформой, управляемой javascript. 12.05.2016
  • Не с помощью BeautifulSoup, но вы можете попытаться проникнуть внутрь этого тега скрипта. Затем, может быть, найти то, что вы ищете, с помощью регулярных выражений? Однако веб-платформа, такая как Instagram, не будет содержать никакой информации в коде Javascript или внешнем интерфейсе. Скорее всего, Instagram сделает запрос JSON. Если это так, вы не сможете получить то, что хотите, с помощью BeautifulSoup. 12.05.2016
  • не могли бы вы проголосовать за мой ответ? 12.05.2016

Ответы:


1

этот код отлично работает для меня:

#!/usr/bin/env python

import requests
from json import loads

username = "liamgiannini"

r = requests.get('https://www.instagram.com/'+username)
html = r.text.encode("utf-8")
text = html[html.index("window._sharedData = ")+21:]
text = (text[:text.index("};</script>")]+"}").replace('\\"', "")
dictionary= loads(text)
data = dictionary["entry_data"]["ProfilePage"][0]["user"]

print "followers: "+str(data["followed_by"]["count"])

напечатав print data.keys(), вы можете получить гораздо больше информации о пользователе

12.05.2016
Новые материалы

Учебные заметки JavaScript Object Oriented Labs
Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

Разбор строк запроса в vue.js
Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
«Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..

Основы принципов S.O.L.I.D, Javascript, Git и NoSQL
каковы принципы S.O.L.I.D? Принципы SOLID призваны помочь разработчикам создавать надежные, удобные в сопровождении приложения. мы видим пять ключевых принципов. Принципы SOLID были разработаны..

Как настроить Selenium в проекте Angular
Угловой | Селен Как настроить Selenium в проекте Angular Держите свое приложение Angular и тесты Selenium в одной рабочей области и запускайте их с помощью Mocha. В этой статье мы..

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..