Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 5, 2013 09:09:15

icefr0g
Зарегистрирован: 2013-02-04
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Python, регулярные выражения и javascript

Всем привет,

Есть html страница, на которой присутствует много яваскриптов. Требуется распарсить страницу и в конкретном скрипте, “вытянуть” определённое значение. Код страницы следующий:

    
    <!DOCTYPE html>
    <html lang="en" class="no-js"> <!--<![endif]-->
    <head>
    <meta charset="utf-8" />
    ....
    <script type="text/javascript">
    ....
    <script type="text/javascript">
    $j(document).ready(function() {
 
    if (!($j.cookie("ios"))) {
    new $c.free.widgets.FreeAdvDialog().open();
    $j.cookie("ios", "seen", { path: '/', expires: 10000});
    };
 
    ajax_keys = ["[b]b8a7b9a9659a495fd8a7483a7f699d7420a60dc1[/b]", "3ab02913b6f3b5abf1ec44ac10aa93ace6c537c0", "53c248ed515fafc48efa0ca7d2b6656eea745324", "1618817133a29d61ba5200ae516a0c7e007a5940"];
    var is_dm = false;
 
    /* async chart loader */
    var chart = new $c.free.widgets.Chart({
    target: $j('#graph'),
    width: 990,
    height: 275,
    site: "911.com",
    source_panel: 'us'
    });
 
    var chart_view = new $c.free.widgets.ChartView({
    chart: chart,
    csv_button: 'csv-export',
    save_button: 'graph-image',
    embed_button: 'embed-graph',
    key: ajax_keys[1]
    });
    chart_view.render();
    ...
Как получить содержимое ajax_keys(например вывести значение b8a7b9a9659a495fd8a7483a7f699d7420a60dc1)?
Для решения задачи использую BeautifulSoup (для парсинга страницы).

    from bs4 import BeautifulSoup
    import urllib2, re
    url = '911.com'
    data = urllib2.urlopen('url').read()
    soup = BeautifulSoup(data)
    #вывожу значение нужного яваскрипта на странице
    to_extract = soup.findAll('script')[51]

Далее распарсить яваскрипт не получается - скорей всего нужно использовать регулярные выражения, в которых не очень силен.
Такая строка:
ajaxre = re.findall("ajax_keys = ([*?;]+)", to_extract)
, дает

TypeError: expected string or buffer

Заранее спасибо за любые советы.

Отредактировано icefr0g (Фев. 5, 2013 09:17:51)

Офлайн

#2 Фев. 5, 2013 11:55:49

dimy44
От: Евпатория
Зарегистрирован: 2012-04-21
Сообщения: 463
Репутация: +  42  -
Профиль  

Python, регулярные выражения и javascript

import re
s = 'ajax_keys = ["[b]abcd", "adadad", "dadada"];'
g = re.search(r'(ajax_keys ?= ?)(\[.+\])(;)', s)
if g:
    for i in eval(g.groups()[1]):
        print i
>>>
[b]abcd[/b]
adadad
dadada
>>>
здесь лишь принцип, нюансы придется учесть самому

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version