首页 » 编程设计

python之使用 scrapy 获取 javascript 回传参数

2024年08月22日44EasonJim

我有以下元素:

<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 参数。我如何从那里抓取它们?

请您参考如下方法:

您可以通过 re() method 完成和多个捕获组:

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

在这里,我使用了相当广泛的 .*? - 非贪婪 匹配任何字符任意次数,但您可以更严格地指定哪些字符匹配什么参数。


阅读延展