我正在使用此JavaScript来验证表单:
I am using this JavaScript to validate a form:
<script type="text/javascript"> function validateForm() { var a=document.forms["orderform"]["Name"].value; var b=document.forms["orderform"]["Street"].value; var c=document.forms["orderform"]["ZIP"].value; var d=document.forms["orderform"]["City"].value; var e=document.forms["orderform"]["PhoneNumber"].value; if ( a==null || a=="" || b==null || b=="" || c==null || c=="" || d==null || d=="" || e==null || e=="" ) {alert("Please fill all the required fields."); return false; } } </script>我正在尝试使用BeatifulSoup捕获警报文本:
I am trying to capture the alert text using BeatifulSoup:
import re from bs4 import BeautifulSoup with open("index.html") as fp: soup = BeautifulSoup(fp, "lxml") for script in soup.find_all(repile("(?<=alert\(\").+(?=\")")): print(script)这不返回任何内容.这基于BS文档中正则表达式"下给出的示例,以查找以"b"开头的标签名称:
This does not return anything. This is based on the example given in the BS documentation under 'A regular expression' to find tag names starting with a 'b':
import re for tag in soup.find_all(repile("^b")): print(tag.name) # body # b但是我似乎找不到与将打印警报文本的'print(tag.name)'等效的内容.还是我完全走错了轨道?非常感谢您的帮助.
but I seem to be unable to find the equivalent to 'print(tag.name)' that would print the alert text. Or am I completely on the wrong track? Any help is much appreciated.
我试过了:
pattern = repile("(?<=alert\(\").+(?=\")")) for script in soup.find_all ('script'): print(script.pattern)这将返回无".
推荐答案在所有html数据上运行将不起作用.首先,您需要提取script数据,然后可以轻松地解析alert文本.
Running over the all html data will not work. First you need to extract the script data then you can easily parse the alert text.
import re from bs4 import BeautifulSoup with open("index.html") as fp: soup = BeautifulSoup(fp, "lxml") script = soup.find("script").extract() # find all alert text alert = re.findall(r'(?<=alert\(\").+(?=\")', script.text) print(alert)输出:
['Please fill all the required fields.']更多推荐
使用BeautifulSoup捕获JavaScript警报文本
发布评论