为了账号安全,请及时绑定邮箱和手机立即绑定

使用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 关注
  • 168 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号