【发布时间】:2019-11-22 11:04:16
【问题描述】:
我正在使用 python 请求库和 BeautifulSoup。
当请求无效时,只有一个 URL 会返回 HTML 并弹出 alert()。
Beautifulsoup 中的问题是我无法获得window.alert 弹出文本。
我曾尝试使用this answer 中的正则表达式方法,但它似乎不起作用。
所以当做:
for script in soup.find_all("script"):
alert = re.findall(r'(?<=alert\(\").+(?=\")', script.text)
脚本永远不会得到执行的脚本。
这是我正在提取的脚本:
<script language="JavaScript">
if(top.frames.length != 0) {
location.href="frame_break.jsp"
}
</script>
<html>
<body>
</body>
</html>
<script>
var err='User ID';
alert(err);
iBankForm.action='login.jsp';
iBankForm.submit();
</script>
我希望收到User ID 的警报文本。
我注意到我是否有无法在下面抓取脚本的标签
如果我将脚本删除或移动到正文标签中,那么我可以获得
<script>
var err='User ID';
alert(err);
iBankForm.action='login.jsp';
iBankForm.submit();
</script>
【问题讨论】:
-
@JoaoPereira 这不起作用,因为 html 有多个
-
@Fozoro 不同,由于编写的 html 的性质,它无法获得警报跨度>
-
在该答案中,为通过使用 find() 方法找到的脚本调用 extract()。您是否尝试过为循环内的每个脚本实例调用 extract() 函数?
-
它在 HTML 标签之外,所以不会在汤里。检查 html 并查看是否可以添加环视以隔离正确的 var
标签: python web-scraping beautifulsoup screen-scraping