Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 21, 2014 22:54:00

simple_user
Зарегистрирован: 2014-07-06
Сообщения: 60
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с Grab

я пытаюсь сделать удобную прогу для включения\выключения интернета
но у меня проблема c Grab

from grab import Grab
g = Grab(charset='Windows-1251')
g.go('https://bill.magnus.net.ua/user/index.php')
g.set_input('us_abon_login', '*******')
g.set_input('us_abon_pass', '*******')
g.submit()
#имитация нажатия кнопки останова интернета
#g.go('https://bill.magnus.net.ua/user/abonbuh.php?type=changetarif&type2=new&type3=1388433311_1579807126')
g.go('https://bill.magnus.net.ua/user/main.php')
print(g.response.body)
выдает
<!DOCTYPE html>
<html>
<head>
    <title>  - Magnus</title>
    <meta http-equiv=content-type content='text/html; charset=Windows-1251'>
    <meta name=description content=' UserSide / ERP UserSide'>
    <meta name=author content='(c) Duringer Anton - office@userside.ua'>
    <script src='../main/js/jquery.js'></script>
    <script src='../main/js/jquery_ui_1251.js'></script>
    <script src='../main/js/icolorpicker.js'></script>
    <script src='../main/js/raphael-min.js'></script>
    <script src='../main/js/raphael.export.js'></script>
    <script src='../main/js/rgbcolor.js'></script>
    <script src='../main/js/stackblur.js'></script>
    <script src='../main/js/canvg.js'></script>
    <script src='../main/js/morris.min.js'></script>
    <script src='../main/js/startscript.js'></script>
    <link rel='stylesheet' href='../main/js/jquery_ui.css'>
    <link rel='stylesheet' href='../main/skins/default/style.css'>
    <link rel='stylesheet' href='../main/skins/user_style.css'>
    <link rel='shortcut icon' href='../favicon.ico'>
    <link rel='image_src' href='../main/picture/us_logo.png'> 
    <link rel='apple-touch-icon' href='../main/picture/us_logo.png'>
    <!-- ERP "UserSide" v.3.4 HF:3 -->
            
</head>
<body>
<!--Popup block-->
<div id="popup">deleted</div>
<script>
    setTimeout(function() {$("#popup").fadeOut()}, 1500);
</script>
<!--Dialog AJAX window-->
<div id="dialog-overlay" onclick="hide_dialog();"></div>
<div id="dialog-box">
    <div class="dialog-content">
        <div id="dialog_message"></div>
    </div>
</div>
<!--Block central window-->
<div id="page_container" style="max-width: 1140px;">
    <div id="main_content">
        <div class="lk_main_content_inside">
            <!--Net Logo & Name-->
            <div class="lk_netdata">
                <div class="lk_netdata_text">
                    <div class="lk_netdata_text_link" onclick="window.location = 'main.php';">
                        <div class="lk_netname">Magnus</div>
                        <div class="lk_lk_text"> </div>
                    </div>
                    <div class="lk_lk_userdata"><b>  </b><br>: <b>WiFi 5&#047; (3.22 . )</b><br>: <span class="green_text bold_text label_h2">18.36 .</span><br>: <b></b><br>IP: <b>31.129.177.199</b><br></div>
                </div>
                <div class="lk_logo"></div>
            </div>
            
            <!--Central block-->
            <div id="div_contentplace">
                <div id="lk_notify_all">
                    <div class="lk_notify_custom">
                        <h3></h3>
                        <div class="text">
                            <span class="div_bold">21.09.2014 17:10</span>     <br>
                             : <span class="div_bold"> (WiFi)</span><br>
                            <div class="div_space" style="margin-bottom: -10px;">
                                <a href="abonbuh.php?type=changetarif" class="link_img">  </a> -  -
                                <a href="abonbuh.php?type=changetarif&amp;type2=del" onclick="return confirm(' ?'); return true;">    </a>
                            </div>
                        </div>
                    </div>
                </div>
            <div class="lk_menu">
                <div class="lk_menu_punkt" onclick="window.location = 'abonmsg.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_msg">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonmsg.php">  .</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abondata.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_data">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abondata.php">  </a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abonbuh.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_buh">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php">   </a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'aboninfo.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_info">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="aboninfo.php"></a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abonbuh.php?type=changetarif';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_change">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php?type=changetarif"> </a>
                        </div>
                    </div>
                </div>
                <script>
                    function js_onclick_5() {
                        ps1 = confirm("  - -?");
                        if (ps1 == true) {
                            window.location = "abonbuh.php?type=promise";
                        }
                        return;
                    }
                </script>    
                    
                <div class="lk_menu_punkt" onclick="js_onclick_5();">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_promise">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php?type=promise" onclick="return confirm('  - -?'); return true;"> </a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="ajax_window('abonbuh.php?type=ajax_portmone');">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_online">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="javascript:ajax_window('abonbuh.php?type=ajax_portmone');">  </a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'https://magnus.net.ua/iptv.htm';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_outlink lk_link_id_3">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="https://magnus.net.ua/iptv.htm">  IPTV&#033;</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'https://magnus.net.ua/news.htm';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_outlink lk_link_id_2">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="https://magnus.net.ua/news.htm">  </a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'index.php?type=userlogout';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_exit">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="index.php?type=userlogout"></a>
                        </div>
                    </div>
                </div>
                <div></div>
            </div>
            </div><!-- #div_contentplace -->
            <!--Central block. FINISH-->
            
        </div><!-- #main_content_inside -->  
    </div><!-- #main_content -->  
    <div id="div_empty"></div>
</div>
</body>
</html>

а должно (в браузере такое)
<!DOCTYPE html>
<html>
<head>
    <title>Личный кабинет - Magnus</title>
    <meta http-equiv=content-type content='text/html; charset=Windows-1251'>
    <meta name=description content='САП UserSide / ERP UserSide'>
    <meta name=author content='(c) Duringer Anton - office@userside.ua'>
    <script src='../main/js/jquery.js'></script>
    <script src='../main/js/jquery_ui_1251.js'></script>
    <script src='../main/js/icolorpicker.js'></script>
    <script src='../main/js/raphael-min.js'></script>
    <script src='../main/js/raphael.export.js'></script>
    <script src='../main/js/rgbcolor.js'></script>
    <script src='../main/js/stackblur.js'></script>
    <script src='../main/js/canvg.js'></script>
    <script src='../main/js/morris.min.js'></script>
    <script src='../main/js/startscript.js'></script>
    <link rel='stylesheet' href='../main/js/jquery_ui.css'>
    <link rel='stylesheet' href='../main/skins/default/style.css'>
    <link rel='stylesheet' href='../main/skins/user_style.css'>
    <link rel='shortcut icon' href='../favicon.ico'>
    <link rel='image_src' href='../main/picture/us_logo.png'> 
    <link rel='apple-touch-icon' href='../main/picture/us_logo.png'>
    <!-- ERP "UserSide" v.3.4 HF:3 -->
            
</head>
<body>
<!--Dialog AJAX window-->
<div id="dialog-overlay" onclick="hide_dialog();"></div>
<div id="dialog-box">
    <div class="dialog-content">
        <div id="dialog_message"></div>
    </div>
</div>
<!--Block central window-->
<div id="page_container" style="max-width: 1140px;">
    <div id="main_content">
        <div class="lk_main_content_inside">
            <!--Net Logo & Name-->
            <div class="lk_netdata">
                <div class="lk_netdata_text">
                    <div class="lk_netdata_text_link" onclick="window.location = 'main.php';">
                        <div class="lk_netname">Magnus</div>
                        <div class="lk_lk_text">Личный кабинет</div>
                    </div>
                    <div class="lk_lk_userdata"><b>***************</b><br>Тариф: <b>WiFi 5Мбит&#047;с (3.22 грн. ежедневно)</b><br>Баланс: <span class="green_text bold_text label_h2">18.36 грн.</span><br>Состояние: <b>Активен</b><br>IP: <b>31.129.177.199</b><br></div>
                </div>
                <div class="lk_logo"></div>
            </div>
            
            <!--Central block-->
            <div id="div_contentplace">
                <div id="lk_notify_all">
                    <div class="lk_notify_custom">
                        <h3>Уведомление</h3>
                        <div class="text">
                            <span class="div_bold">21.09.2014 17:10</span> подана заявка на смену тарифа<br>
                            Новый тариф: <span class="div_bold">Пауза (WiFi)</span><br>
                            <div class="div_space" style="margin-bottom: -10px;">
                                <a href="abonbuh.php?type=changetarif" class="link_img">Выбрать другой тариф</a> - или -
                                <a href="abonbuh.php?type=changetarif&amp;type2=del" onclick="return confirm('Действительно удалить?'); return true;">удалить заявку на смену тарифа</a>
                            </div>
                        </div>
                    </div>
                </div>
            <div class="lk_menu">
                <div class="lk_menu_punkt" onclick="window.location = 'abonmsg.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_msg">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonmsg.php">Обратиться в тех.поддержку</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abondata.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_data">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abondata.php">Мои личные данные</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abonbuh.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_buh">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php">История начислений и оплат</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'aboninfo.php';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_info">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="aboninfo.php">Информация</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'abonbuh.php?type=changetarif';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_change">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php?type=changetarif">Изменить тариф</a>
                        </div>
                    </div>
                </div>
                <script>
                    function js_onclick_5() {
                        ps1 = confirm("Воспользоваться услугой -Обещанный платеж-?");
                        if (ps1 == true) {
                            window.location = "abonbuh.php?type=promise";
                        }
                        return;
                    }
                </script>    
                    
                <div class="lk_menu_punkt" onclick="js_onclick_5();">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_promise">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="abonbuh.php?type=promise" onclick="return confirm('Воспользоваться услугой -Обещанный платеж-?'); return true;">Обещанный платеж</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="ajax_window('abonbuh.php?type=ajax_portmone');">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_online">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="javascript:ajax_window('abonbuh.php?type=ajax_portmone');">Пополнить счет ОНЛАЙН</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'https://magnus.net.ua/iptv.htm';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_outlink lk_link_id_3">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="https://magnus.net.ua/iptv.htm">Новая услуга IPTV&#033;</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'https://magnus.net.ua/news.htm';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_outlink lk_link_id_2">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="https://magnus.net.ua/news.htm">Новости нашей компании</a>
                        </div>
                    </div>
                </div>
                <div class="lk_menu_punkt" onclick="window.location = 'index.php?type=userlogout';">
                    <div class="lk_menu_punkt_inside">
                        <div class="lk_link_default lk_link_exit">&nbsp;</div>
                        <div class="lk_menu_punkt_inside_link">
                            <a href="index.php?type=userlogout">Выход</a>
                        </div>
                    </div>
                </div>
                <div></div>
            </div>
            </div><!-- #div_contentplace -->
            <!--Central block. FINISH-->
            
        </div><!-- #main_content_inside -->  
    </div><!-- #main_content -->  
    <div id="div_empty"></div>
</div>
</body>
</html>


мне кажется граб неправильно распознает руские буквы, я ему уже и указал кодировку но всеровно …
в чем может быть проблема?
может на основе request сделать? но я не знаю как нажимать кнопочки (они через js скрипт сделаны)

Отредактировано simple_user (Сен. 21, 2014 22:56:41)

Офлайн

#2 Сен. 22, 2014 00:28:24

Notan1310
Зарегистрирован: 2014-09-14
Сообщения: 98
Репутация: +  0  -
Профиль   Отправить e-mail  

Проблема с Grab

Если я правильно понял, то не проходит авторизация.
Попробуй нажимать с задержкой и по названию.

g.submit('Название кнопки либо xpath кнопки')

Убери еще вот это:
#имитация нажатия кнопки останова интернета
#g.go('https://bill.magnus.net.ua/user/abonbuh.php?type=changetarif&type2=new&type3=1388433311_1579807126')
g.go('https://bill.magnus.net.ua/user/main.php')
print(g.response.body)

И теперь посмотри какая страница в логе выводится. В форме может быть несколько кнопок и поэтому Grab'e выбирает подходящую.

Отредактировано Notan1310 (Сен. 22, 2014 00:34:34)

Офлайн

#3 Сен. 23, 2014 15:39:06

simple_user
Зарегистрирован: 2014-07-06
Сообщения: 60
Репутация: +  2  -
Профиль   Отправить e-mail  

Проблема с Grab

Авторизация происходит, проблема сейчас лишь в том чтоб что я не могу распарсить то что написано русскими буквами, так как граб их просто удаляет….

Офлайн

#4 Сен. 25, 2014 09:17:10

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

Проблема с Grab

> g = Grab(charset='Windows-1251')

Вроде ж document_charset опция должна быть, а не charset :)

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version