python
  • scrapy
  • 2016-06-08 3 views 2 likes 
    2

    У меня есть следующий элемент:Получение JavaScript параметры обратной передачи с Scrapy

    <a class="html-attribute-value html-external-link" target="_blank" href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ResultsGrid$15", "", false, "", "webproperty.aspx?s=id&amp;s=15&amp;time=201606080118012&amp", false, true))'>javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&amp;quot;ucResultsGrid$R000000015&amp;quot;, &amp;quot;&amp;quot;, false, &amp;quot;&amp;quot;, &amp;quot;webprop.aspx?s=id&amp;amp;sr=15&amp;amp;time=201606080118012&amp;amp;id=15&amp;quot;, false, true))</a> 
    

    Я хочу, чтобы получить JavaScript параметры, чтобы попытаться восстановить запрос, полученный, нажав на ссылку. Я обнаружил, что:

    response.selector.xpath('//*[@id="ResultsGrid$15"]/@href').extract() 
    
    Out[20]: [u'javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ResultsGrid$15", "", false, "", "webproperty.aspx?s=id&sdata=15&time=201606080037034&id=15", false, true))'] 
    

    Это хорошо выглядит и декодирует параметры javascript. Как мне их схватить?

    ответ

    3

    Вы можете сделать это с помощью re() method и нескольких захватывающих групп:

    response.selector.xpath('//*[@id="ResultsGrid$15"]/@href').re(r'javascript:WebForm_DoPostBackWithOptions\(new WebForm_PostBackOptions\("(.*?)", "(.*?)", (.*?), "(.*?)", "(.*?)", (.*?), (.*?)\)\)') 
    

    Здесь я использую довольно широкий .*? - нежадных матча для любых символов любого количества раз, но вы можете быть более строгие о том, какие символы соответствуют в каком параметре.

    +0

    спасибо! – user61629

     Смежные вопросы

    • Нет связанных вопросов^_^