Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 25, 2013 22:07:23

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парсер

Budulianin
Если вы ещё не читали прочитайте эту статью про BeautifulSoup: http://habrahabr.ru/post/114503/
Вы тоже прочитайте :)



Офлайн

#2 Сен. 25, 2013 22:11:12

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Парсер

В браузере “просмотр кода элемента” , в DOM есть этот класс, но сам скрипт его не находит, и сохраняя на диске дубль страницы , тоже уже измененный, без этой ветви

Офлайн

#3 Сен. 25, 2013 22:38:00

SoT
Зарегистрирован: 2012-12-12
Сообщения: 68
Репутация: +  4  -
Профиль   Отправить e-mail  

Парсер

Budulianin
Там же написано span с классом hottrends-single-trend-title

Я спрашивал про цель скрипта. Мне неизвестно что хранится в этом классе, про эту информацию я и хотел узнать чтобы возможно предложить ещё вариантов для её извлечения. Какой смысл отвечать в ветке не пытаясь помочь?

А по теме - может попробовать другим парсером забрать эту страницу?

Офлайн

#4 Сен. 25, 2013 23:41:45

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парсер

SoT
Мне неизвестно что хранится в этом классе

А посмотреть через браузер ? Заголовки запросов в этом span находятся

Там для таких любителей парсеров стоит JS функция, которая изменяет HTML код

обфускация



Отредактировано Budulianin (Сен. 26, 2013 00:12:06)

Офлайн

#5 Сен. 26, 2013 06:22:33

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Парсер

Цель - забрать со страницы 5-10 лидирующих поисковых запросов
Пробовал Grab , BeautifulSoup…

Офлайн

#6 Сен. 26, 2013 06:52:10

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

Парсер

попробуй это для вычисления результата обфусцированного кода



Отредактировано py.user.next (Сен. 26, 2013 06:52:57)

Офлайн

#7 Сен. 26, 2013 12:13:40

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Парсер

да читаю сейчас, пытаюсь разобраться,спасибо py.user.next Budulianin

Отредактировано sanodin (Сен. 26, 2013 18:31:01)

Офлайн

#8 Сен. 26, 2013 23:39:40

bw
От:
Зарегистрирован: 2007-09-26
Сообщения: 938
Репутация: +  20  -
Профиль   Адрес электронной почты  

Парсер

Да причём здесь обфускация, которую вы к тому же с упаковкой путаете. Делается JS не к месту из-за моды и оправдания высоких зарплат и раздутых штатов. Когда-то была благородная цель снизить трафик, но сейчас про неё бладополучно забыли и даже смогли его увеличить.
Готовый интерпретатор JS это конечно хорошо, но ещё вам потребуется 40kloc и год работы (при хорошем изначальном скиле) что бы воссоздать хоть какое-то достаточное браузерное окружение. При чём на этом пути вам будут попадаться только враги: отсутствие документации, стандартов, спецификаций, противоречивые “описания” API и поведения браузеров. Большую часть времени вы будите проводить на форумах и разных тематических сайтах, пытаясь понять по опыту JS-кодеров и собственным эксперементам, как должна быть реализована та или иная хрень в браузере. Поверьте, веб, тот что за картинками с котятами – клоака, какую в программирование встретить возможно никогда больше и не придётся.

Трассируте и анализаруйте запросы браузера. Изучайте, при необходимости, доступный JS. Повторяйте поведение JS на Python. В худшем случае на эту работу потребуется 2 дня.

p.s. Как вы поняли, мои нападки связаны с подорванным психическим здоровьем, после нескольких лет занятия тем, на что другие комментаторы сейчас вас подталкивают :-).

..bw



Отредактировано bw (Сен. 27, 2013 03:38:37)

Офлайн

#9 Сен. 27, 2013 06:52:55

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Парсер

я понял , что мне нужно с помощью pythona отобразить работу js , как в браузере, и считать данные, вчера этим и занимался, spynner , Ghost, selenium…сегодня продолжу
любой браузер, написанный на python, делает это

Отредактировано sanodin (Сен. 27, 2013 07:06:22)

Офлайн

#10 Сен. 27, 2013 18:29:48

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Парсер

С этим просто справился spynner…
В общем пока разбирался

#!/usr/bin/python
# -*- coding: utf-8 
import spynner
import pyquery
browser = spynner.Browser(debug_level=spynner.INFO)
browser.set_html_parser(pyquery.PyQuery)
browser.create_webview()
browser.load("http://www.google.com/trends/hottrends#pn=p14")
data = browser.soup('span').text("hottrends-single-trend-title")
#data = browser.soup('span').after("class='hottrends-single-trend-title'")
#data = browser.soup('span').toggleClass("class='hottrends-single-trend-title'")
#data = browser.soup("span").attr('class')
print  data

print dir(browser.soup)
['Fn', '__add__', '__call__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__dict__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__html__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__module__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', '__unicode__', '__weakref__', '_append', '_base_url', '_css_to_xpath', '_extend', '_filter_only', '_get_root', '_nextAll', '_parent', '_prevAll', '_translator', '_traverse', '_traverse_parent_topdown', 'addClass', 'after', 'append', 'appendTo', 'attr', 'base_url', 'before', 'children', 'clone', 'closest', 'contents', 'count', 'css', 'each', 'empty', 'encoding', 'end', 'eq', 'extend', 'filter', 'find', 'fn', 'hasClass', 'height', 'hide', 'html', 'index', 'insert', 'insertAfter', 'insertBefore', 'is_', 'items', 'length', 'make_links_absolute', 'map', 'next', 'nextAll', 'not_', 'outerHtml', 'parent', 'parents', 'parser', 'pop', 'prepend', 'prependTo', 'prev', 'prevAll', 'remove', 'removeAttr', 'removeClass', 'remove_namespaces', 'replaceAll', 'replaceWith', 'reverse', 'root', 'show', 'siblings', 'size', 'sort', 'text', 'toggleClass', 'val', 'width', 'wrap', 'wrapAll', 'xhtml_to_html']

да пока тестировал, меня перестали пускать к этой странице, надеюсь временно

Отредактировано sanodin (Сен. 27, 2013 22:21:05)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version