猿问

使用Python从html中的脚本对象函数获取文本/属性

我一直在我需要获取 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] 但不起作用


陪伴而非守候
浏览 169回答 1
1回答

繁星淼淼

beautifulsoup不解析JavaScript,所以你需要使用其他工具。例如re提取信息:import refrom ast import literal_evaltxt = '''<script type="text/javascript">//COMMENT// Some data already here$(document).ready(function() {&nbsp; &nbsp; name.init("<website Link>")&nbsp; &nbsp; lang.init("en", "GB")&nbsp; &nbsp; 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 refrom ast import literal_evaltxt = '''<script type="text/javascript">//COMMENT// Some data already here$(document).ready(function() {&nbsp; &nbsp; ab.info.init("sv", "pp", "f", "NONE",&nbsp; &nbsp; &nbsp; &nbsp; "rw", "3r7u6565667",&nbsp; &nbsp; &nbsp; &nbsp; "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')
随时随地看视频慕课网APP

相关分类

Python
我要回答