Найти - Пользователи
Полная версия: Парсер
Начало » Python для новичков » Парсер
1 2 3
Budulianin
Budulianin
Если вы ещё не читали прочитайте эту статью про BeautifulSoup: http://habrahabr.ru/post/114503/
Вы тоже прочитайте :)
sanodin
В браузере “просмотр кода элемента” , в DOM есть этот класс, но сам скрипт его не находит, и сохраняя на диске дубль страницы , тоже уже измененный, без этой ветви
SoT
Budulianin
Там же написано span с классом hottrends-single-trend-title

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

А по теме - может попробовать другим парсером забрать эту страницу?
Budulianin
SoT
Мне неизвестно что хранится в этом классе

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

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

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

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

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

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

..bw
sanodin
я понял , что мне нужно с помощью pythona отобразить работу js , как в браузере, и считать данные, вчера этим и занимался, spynner , Ghost, selenium…сегодня продолжу
любой браузер, написанный на python, делает это
sanodin
С этим просто справился 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']

да пока тестировал, меня перестали пускать к этой странице, надеюсь временно
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB