С Новым годом! Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/103: Рейтинг темы: голосов - 103, средняя оценка - 4.90
9 / 9 / 8
Регистрация: 24.10.2013
Сообщений: 215

Парсинг страницы со скриптами javascript

29.09.2015, 14:38. Показов 21620. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, столкнулся с такой проблемой!
Нужно спарсить сайт, но практически весь контент на нём появляется с помощью javascript, причём связи между готовой html страничкой в браузере и неготовой страничкой исходного кода я не нашёл. Вот такой вопрос: можно ли получить страницу в Python, собрать её и избавиться таким образом от javascript-ов и спокойно парсить? Или, может быть, есть модуль для изначального поиска по странице с javascript-ами?

На всякий случай, сайт hackerrank.com. Мне нужно скачать все мои конечные решения всех моих задач

Спасибо заранее за помощь
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
29.09.2015, 14:38
Ответы с готовыми решениями:

Парсинг на Python (со скриптами JS)
Всем привет! Дали задание спарсить услуги с сайта. Нашел интересную библиотеку BeatifulSoup. Вроде бы все хорошо, все работает как надо....

Парсинг страницы с JavaScript
Привет! Помогите пожалуйста советом/примером! Суть в следующем: Есть список кодов почтовых отправлений(курьерская...

Javascript. Парсинг страницы
Подскажите пожалуйста как и возможно ли вообще с помощью Javascript спарсить страницу. Например есть страница...

9
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
29.09.2015, 15:12
Похоже на то, что контент подгружается с помощью технологии AJAX. Если это так, то понадобится HTTP сниффер для отслеживания запросов. Дальше нужно повторять запросы и парсить результаты.
0
9 / 9 / 8
Регистрация: 24.10.2013
Сообщений: 215
29.09.2015, 15:15  [ТС]
Не подскажете, как пользоваться http снифером и каким образом ajax подгружает контент?
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
29.09.2015, 15:23
Если пользуетесь Firefox, могу посоветовать дополнение HttpFox. Принцип работы любого сниффера одинаковый - отслеживать запросы, которые делает пользователь, либо, как в вашем случае javascript код. Если сервер отвечает на запрос, отслеживается также и ответ. Может быть, не понятно, если никогда не занимались этим, но как только установите сниффер, все должно прояснится. После того, как поймете, куда идут запросы, повторите их и начинайте анализировать ответ. Про Ajax.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
29.09.2015, 15:46
Все тупо и просто, берешь selenium, используешь любой понравившийся браузер и все готово.

Цитата Сообщение от ivitaliy Посмотреть сообщение
Если пользуетесь Firefox, могу посоветовать дополнение HttpFox.
Тоже занимался подобными вещами, в firefox великолепные инструменты разработчики сразу из коробки есть, ни какие расширения не нужны.
0
123 / 62 / 32
Регистрация: 10.01.2014
Сообщений: 241
29.09.2015, 17:01
Ryder95,
В общем там все довольно просто вот такой запрос шлется при логине на выделенный мной адрес
далее внизу вы можете увидеть данные которые пересылаются на https://www.hackerrank.com/auth/login

вот они:
login:test
password:test
remember_me:false
fallback:true

следовательно в любой удобной для вас библиотеке делаете POST запрос с такими же данными
типа:
Python
1
2
data = {'login': 'test', 'password': 'test', 'remember_me': 'false', 'fallback': 'true'}
r = requests.post("https://www.hackerrank.com/auth/login", data=data)
далее в r у вас будет лежать Response от сервера в json

Не по теме:

фак как миниатюру убрать ?

Миниатюры
Парсинг страницы со скриптами javascript  
1
9 / 9 / 8
Регистрация: 24.10.2013
Сообщений: 215
30.09.2015, 12:39  [ТС]
Не могли бы родсказать, что именно нужно достать из selenium-а? Скажем так, с помощью requests я достал много информации (разделы, подразделы), кроме главной (задачи и их решения):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import requests, getpass, json, os
session=requests.Session()
login=input("Введите логин: ")
password=getpass.getpass("Введите пароль: ")
response=session.get("https://www.hackerrank.com/login",\
auth=(login, password))
auth_page=response.text
if auth_page.find("<!DOCTYPE html>")!=-1:
    print("Авторизация пройдена успешно")
else:
    print("Ошибка авторизации")
    input()
    exit(255)
response=session.get("https://www.hackerrank.com/domains")
print(dir(response.json))
domains_page=response.text
parts=None
try:
    index=domains_page.index("HR.PREFETCH_DATA = ")
    domains_page=domains_page[index+19:]
    index=domains_page.index(";")
    domains_page=domains_page[:index]
    parts=json.loads(domains_page)
except:
    exit(254)
Теперь бы мне получить просто html содержимое файла
В общем, всё, что сделал selenium - это открыл браузер, причём без моего логина, что, в общем, не удивительно, ведь я не знаю, как в нём залогиниться(

UPD:
Лазая в Google Chrome, нашёл такую штуку:

В нём хранится весь мой код.
Не подскажите, как же достать его оттуда с помощью кода Python?
0
9 / 9 / 8
Регистрация: 24.10.2013
Сообщений: 215
30.09.2015, 12:42  [ТС]
Хотя нет, здесь не просто мой код, а тот код, который отображается при открытии каждой задачи
0
34 / 20 / 9
Регистрация: 29.08.2015
Сообщений: 87
30.09.2015, 12:50
Нужно запустить selenium, потом открыть браузер и авторизоваться. Затем остановить selenium и посмотреть куда и какие запросы шли. Проанализировать и повторить запросы в Python.
0
2742 / 2341 / 620
Регистрация: 19.03.2012
Сообщений: 8,830
30.09.2015, 13:02
Цитата Сообщение от Ryder95 Посмотреть сообщение
Теперь бы мне получить просто html содержимое файла
А в чем проблема то? У объекта browser есть метод, который возвращает html.

Алгоритм то работы простой, сначала делаешь тоже самое, что в ручную (загружаешь страницу, тыкаешь на нужные кнопки), а потом просто вытягиваешь html парсишь его.

http://selenium-python.readthe... arted.html
Python
1
driver.page_source
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2015, 13:02
Помогаю со студенческими работами здесь

Парсинг страницы созданой на JavaScript
Всем привет Нужно получить полный код страницы &quot;http://myscore.ru&quot; средствами PHP или jQuery. Данные на странице генерируются с помощью...

Парсинг сайта, если сама страница генерируется скриптами при загрузке
Господа, подскажите новичку, как получить информацию, например с этой страницы, если сама страница генерируется скриптами при загрузке....

Как скачать отдельный блок с html страницы со всеми стилями и скриптами?
у меня два вопроса: 1. Как скачать целиком всю html страницу со всеми стилями и скриптами? 2. Как скачать отдельный блок с html...

Парсинг javaScript
Добрый день. Пишу на asp.net + ext.net (ext.js) Есть поле для ввода javaScript,его содержимое надо как-то распарсить и найти все...

Парсинг на javascript
Ситуация такая: Необходимо парсить весь исходный код чужой страницы на стороне пользователя (потому что на той странице url который мне...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru