在给定的.html页面中,我有一个类似的脚本标记:


 < script>
 function loadDoc(){& #xA; var xhttp = new XMLHttpRequest();
 xhttp.onreadystatechange = function(){
 if(this.readyState == 4&& this.status == 200){
 document.getElementById(“demo”)。innerHTML =
 this.responseText;
 }
 };
 xhttp.open(“GET”,“ajax_info.txt”,true);
 xhttp.send();
}
< / script>



 如何使用美丽的汤来在.open函数中获取第二个参数?




这种情况是“ajax_info.txt”


答案 0 :(得分:0)
BeautifulSoup不是为此而构建的。它用于解析HTML而不是JavaScript或任何其他Web语言。
更简单的方法是使用headless browser或PhantomJS等Selenium
您也可以使用regex解析JavaScript,或者不使用this post
中所述的正则表达式<小时/> 编辑:
示例:强>
我不知道如何使用无头浏览器,虽然这可能是未来的最佳方式,但是我知道足够的正则表达式来创建一个快速而肮脏的示例,它将适用于您上面列出的示例。
b = """function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}"""
# Get value between <script></script> using BeautifulSoup and store in "b"
import re
a = re.compile('"GET", "[\S ]+"')
c = a.search(b).group()
print(c[8:-1])