亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用Python從html中的腳本對象函數獲取文本/屬性

使用Python從html中的腳本對象函數獲取文本/屬性

陪伴而非守候 2023-03-16 15:25:02
我一直在我需要獲取 javascript 的網站上進行網絡抓取,以便我可以提取名稱、創建日期和一些隨機生成的代碼等數據,如下所示...<script type="text/javascript">是否有一種有效/任何方式從 html 網頁中的腳本對象函數獲取文本/屬性。我能夠使用 BeautifulSoup 找到腳本部分,其中嵌入的功能如下:<script type="text/javascript">//COMMENT// Some data already here$(document).ready(function() {    name.init("<website Link>")    lang.init("en", "GB")    data.init("hello", "", "AT3K21SDV", "YIERE34ITEW832WCNG3VMASJKHO345JKRELRK5", "")});</script>具體來說,我需要獲取$(document).ready(function()將包含AT3K21SDV和 的部分YIERE34ITEW832WCNG3VMASJKHO345JKRELRK5。我一直在絞盡腦汁試圖像這樣使用索引來獲取它;`soup[3:40] 但不起作用
查看完整描述

1 回答

?
繁星淼淼

TA貢獻1775條經驗 獲得超11個贊

beautifulsoup不解析JavaScript,所以你需要使用其他工具。例如re提取信息:


import re

from ast import literal_eval



txt = '''<script type="text/javascript">


//COMMENT// Some data already here


$(document).ready(function() {

    name.init("<website Link>")

    lang.init("en", "GB")

    data.init("hello", "", "AT3K21SDV", "YIERE34ITEW832WCNG3VMASJKHO345JKRELRK5", "")

});

</script>'''


data = re.search(r'data\.init(\(.*?\))', txt).group(1)

data = literal_eval(data)


print(data[2], data[3])

印刷:


AT3K21SDV YIERE34ITEW832WCNG3VMASJKHO345JKRELRK5

編輯:如果里面data.init(...)是換行符,你必須flags=re.DOTALL設置re.search():


import re

from ast import literal_eval



txt = '''<script type="text/javascript">


//COMMENT// Some data already here


$(document).ready(function() {

    ab.info.init("sv", "pp", "f", "NONE",

        "rw", "3r7u6565667",

        "3435345")

});

</script>'''


data = re.search(r'info\.init(\(.*?\))', txt, flags=re.DOTALL).group(1)

data = literal_eval(data)


print(data)

印刷:


('sv', 'pp', 'f', 'NONE', 'rw', '3r7u6565667', '3435345')


查看完整回答
反對 回復 2023-03-16
  • 1 回答
  • 0 關注
  • 149 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號