Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 14, 2012 17:38:40

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

хочу извлечь электронные адреса с сайта .
адрес электроники генерируется javascript-скриптом
пример кода с (http://www.mascus.com/heisel-equipment-company/51b81b77,companycard.html)

<span id="h754242Y"></span><script type="text/javascript">\n//<![CDATA[\n$(function() { var s929242H = function(b123968E) { b123968E=b123968E.replace(/c176057T/g,\'\'); b123968E=b123968E.replace(/x632816X/g,\'.\'); b123968E=b123968E.replace(/h21374K/g,\'@\'); return b123968E; };\nvar o938391R = function(q466574K) { var d748892R=\'\'; for (var i=q466574K.length-1;i>=0;i--) { d748892R+=q466574K[i]; } return d748892R; };\nvar v540997O = function(i500895E,h909762E) { var m613707L=s929242H(o938391R(i500895E)); var l283256W=\'ilt\';l283256W=\'ma\'+l283256W;l283256W+=\'o\'; if (!h909762E) { h909762E=m613707L; } $(\'#h754242Y\').html(\'<\' + \'a \' + \'rel\'+  \'="no\' +\'f\'+\'oll\'+ \'ow" class="Orange12Bold" hr\' + \'ef="#">\'+h909762E+\'<\'+\'/\' +\'a\'  + \'>\'); var c176057T = function() { $(this).attr(\'hr\' +\'e\'+ \'f\', l283256W+ \':\'+m613707L); }; $(\'#h754242Y a\').mouseover(c176057T); };\nvar u48036O=[\'com\',\'816X\',\'632\',\'lx\',\'ai\',\'tm\',\'To\',\'57\',\'760\',\'Khc1\',\'1374\',\'13h2\',\'el\',\'is\',\'_he\',\'rk\',\'ma\'];var m238820U=null;v540997O(u48036O,m238820U);});\n//]]>\n</script>
не подскажите как с такого кода сгенерировать адрес электроники.

Отредактировано agryn (Ноя. 14, 2012 17:43:14)

Офлайн

#2 Ноя. 14, 2012 20:06:09

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Подскажем:

from ghost import Ghost
from lxml.html import fromstring

url = 'http://www.mascus.com/21st-century-equipment-inc-gordon/282e0a01,companycard.html'

ghost = Ghost()
page, extra_resources = ghost.open(url)
tree = fromstring(ghost.content)
items = tree.xpath('//span[text()="E-mail address:"]/..'\
'/following-sibling::td[1]'
'//a[contains(text(), "@")]')
for item in items:
print item.text

http://jeanphix.me/Ghost.py/

Офлайн

#3 Ноя. 15, 2012 09:40:48

Seganapa
От: Новороссийск
Зарегистрирован: 2012-07-31
Сообщения: 139
Репутация: +  0  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

lorien Не подскажешь Ghost возможно под винду настроить? А то я что-то начал, да так и не осилил… Ошибки валятся…



—————————————————————–
Изучаю и параллельно использую Python 2.7

Офлайн

#4 Ноя. 15, 2012 10:08:33

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Не знаю, я в линуксе шарю только.

Офлайн

#5 Ноя. 15, 2012 12:46:26

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

lorien, Я пробую запустить скрипт с примером кода под ubuntu 12.04.i686, все зависимости для Ghost установлены, но все таки как я понял нужно запускать иксы для работы Ghost-а (после

ghost = Ghost()
вываливаетса
Xvfb is required to a ghost run oustside an X instance
). Не подскажите как запустить иксы с потреблением минимума ресурсов?

Отредактировано agryn (Ноя. 15, 2012 12:47:27)

Офлайн

#6 Ноя. 15, 2012 20:42:28

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Подскажем. Ставишь Xvfb:
sudo aptitude Xvfb
Запускаешь:
Xvfb :0 -screen 0 1024x768x16
Далее запускаешь команду:
DISPLAY=:0.0 python yourscript.py

Офлайн

#7 Ноя. 15, 2012 23:38:46

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Последний вопрос. Эти все файлы с которых мне нужно стянуть электроники уже сохранены на диске. Как бы их загнать в Ghost?

Офлайн

#8 Ноя. 16, 2012 06:17:11

reclosedev
От: Н.Новгород
Зарегистрирован: 2012-03-29
Сообщения: 870
Репутация: +  173  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

agryn
Эти все файлы с которых мне нужно стянуть электроники уже сохранены на диске. Как бы их загнать в Ghost?
"file://localhost/full/path/to/some/file.html"
должно сработать

Офлайн

#9 Ноя. 16, 2012 11:12:46

agryn
От: Украина
Зарегистрирован: 2011-12-14
Сообщения: 189
Репутация: +  0  -
Профиль   Отправить e-mail  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Вариант такой записи сработал. Но от такая ошибка:

---------------------------------------------------------------------------
Exception Traceback (most recent call last)
/root/<ipython-input-5-5b73efb33967> in <module>()
----> 1 page, extra_resources = ghost.open(url)

/usr/local/lib/python2.7/dist-packages/ghost/ghost.pyc in open(self, address, method)
387 self.main_frame.load(request, method, body)
388 self.loaded = False
--> 389 return self.wait_for_page_loaded()
390
391 class prompt:

/usr/local/lib/python2.7/dist-packages/ghost/ghost.pyc in wait_for_page_loaded(self)
492 """
493 self._wait_for(lambda: self.loaded,
--> 494 'Unable to load requested page')
495 resources = self._release_last_resources()
496 page = None

/usr/local/lib/python2.7/dist-packages/ghost/ghost.pyc in _wait_for(self, condition, timeout_message)
554 while not condition():
555 if time.time() > (started_at + self.wait_timeout):
--> 556 raise Exception(timeout_message)
557 time.sleep(0.01)
558 self.app.processEvents()
Exception: Unable to load requested page
увеличение таймаута к 30 сек не увенчалось успехом. Нет ли возможности запустить єтот кусок кода с помощью eval (я пробовал по разному но не получилось).

Отредактировано agryn (Ноя. 16, 2012 11:21:19)

Офлайн

#10 Ноя. 16, 2012 19:49:20

lorien
От:
Зарегистрирован: 2006-08-20
Сообщения: 755
Репутация: +  37  -
Профиль  

Адрес e-mail генерирует javascript. Как сгенерировать под python?

Видимо, потому что Ghost пытается подгрузить скрипты и стили и прочие объекты, прописанные в HTML сохранённых страниц, но т.к. ссылки там относительные, то он не может ничего загрузить.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version