要添加更多一点的@鲍勃的回答假设你还需要找到script
中,可能有其他的HTML标记script
标签。
我们的想法是定义一个正则表达式,用于通过BeautifulSoup
定位元素并提取email
值:
import re
from bs4 import BeautifulSoup
data = """
<body>
<script>jQuery(window).load(function () {
setTimeout(function(){
jQuery("input[name=Email]").val("name@email.com");
}, 1000);
});</script>
</body>
"""
pattern = re.compile(r'\.val\("([^@]+@[^@]+\.[^@]+)"\);', re.MULTILINE | re.DOTALL)
soup = BeautifulSoup(data, "html.parser")
script = soup.find("script", text=pattern)
if script:
match = pattern.search(script.text)
if match:
email = match.group(1)
print(email)
打印: name@email.com
。
这里我们使用一个简单的正则表达式来表示电子邮件地址 ,但我们可以更进一步,更严格地对待它,但我怀疑这对于这个问题几乎是必要的。