在给定的 .html 页面中,我有一个这样的脚本标记:
<script>jQuery(window).load(function () {
setTimeout(function(){
jQuery("input[name=Email]").val("name@email.com");
}, 1000);
});</script>
如何使用 Beautiful Soup 提取电子邮件地址?
最佳答案
向 @Bob's answer 添加更多信息并假设您还需要在 HTML 中找到 script
标签,其中可能有其他 script
标签。
我们的想法是定义一个正则表达式,用于locating the element with 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
。
这里我们使用 simple regular expression for the email address ,但我们可以走得更远,对此更加严格,但我怀疑这对于这个问题是否有实际必要性。
关于python - 如何使用 Beautiful Soup 提取 <script> 标签中的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38547569/