Найти - Пользователи
Полная версия: Python, регулярные выражения и javascript
Начало » Python для новичков » Python, регулярные выражения и javascript
1
icefr0g
Всем привет,

Есть 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

Заранее спасибо за любые советы.
dimy44
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
>>>
здесь лишь принцип, нюансы придется учесть самому
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