W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
如果所需數(shù)據(jù)是用javascript硬編碼的,則首先需要獲取javascript代碼:
response.text
? .<script/>
? HTML頁的元素,使用 selectors 提取其中的文本 ?<script/>
? 元素。一旦有了包含javascript代碼的字符串,就可以從中提取所需的數(shù)據(jù):
json.loads()
? .例如,如果javascript代碼包含類似 ?var data = {{"field": "value"}};
? 您可以按如下方式提取該數(shù)據(jù):
>>> pattern = r'\bvar\s+data\s*=\s*(\{.*?\})\s*;\s*\n'
>>> json_data = response.css('script::text').re_first(pattern)
>>> json.loads(json_data)
{'field': 'value'}
var data = {{field: "value", secondField: "second value"}};
? 您可以按如下方式提取該數(shù)據(jù):>>> import chompjs
>>> javascript = response.css('script::text').get()
>>> data = chompjs.parse_js_object(javascript)
>>> data
{'field': 'value', 'secondField': 'second value'}
例如,如果javascript代碼包含 var data = {{field: "value"}}; 您可以按如下方式提取該數(shù)據(jù):
>>> import js2xml
>>> import lxml.etree
>>> from parsel import Selector
>>> javascript = response.css('script::text').get()
>>> xml = lxml.etree.tostring(js2xml.parse(javascript), encoding='unicode')
>>> selector = Selector(text=xml)
>>> selector.css('var[name="data"]').get()
'<var name="data"><object><property name="field"><string>value</string></property></object></var>'
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: