execjs模塊
在網頁數據提取的日常中,經常有一些有用的信息以json的格式存放在網頁的源代碼中,這時候要規則的提取的這些數據,就需要一個能夠解析js的包了,execjs提供了簡單易用的api
安裝
使用pip安裝:
pip install PyExecJS
使用easy_install安裝:
easy_install PyExecJS
使用
這里使用了一個網站的網頁做示例,它的源代碼中有這么一段
我們的目標是提取圖中的json數據,代碼如下:
import requestsimport reimport execjsfrom lxml import etree url = ' https:// www.madewell.com/cn/madewell_category/SHIRTSTOPS/topsblouses/PRDOVR~F9375/F9375.jsp'res = requests.get(url) doc = etree.HTML(res.text)#s_text = doc.xpath('//script/text()')#def f(var,text):# if var in text:# return True# return False#data = filter(partial(f,"var data"),s_text)[0]data = ''.join(doc.xpath('//script[contains(text(),"var data")]/text()')) json_raw = re.search('({[\S\s]*\})',data).group(1) jsn = execjs.eval(json_raw) print (jsn)
執行結果如下圖:
擴展
在一些數據的抽取中用到了模擬瀏覽器,通常我們會用selenium或者其他的webkit包,但是一般的模擬包只是返回了渲染后的頁面,有的時候僅僅是返回動態渲染的頁面是不夠的,還需要能夠執行js并控制js與dom交互,有興趣的同學可以看一下PyV8和w3c包
相信看了這些案例你已經掌握了方法,更多精彩請關注Gxl網其它相關文章!
相關閱讀:
怎樣在Android開發中與js進行交互
JS模塊化-RequireJS
在vue首頁怎樣做出底部導航TabBar
一個用Vue.js 2.0+做出的石墨文檔樣式的富文本編輯器
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com