gpt4 book ai didi

regex - beautifulsoup 从 javascript 变量中获取 URL

转载 作者:行者123 更新时间:2023-12-03 23:52:11 26 4
gpt4 key购买 nike

我正在尝试通过 beautifulsoup 从 javascript 获取 URL。我有以下 javascript 源代码

<script type="text/javascript">
var abc_url = "http://www2.example.com/ar/send/0?tk=13_s&id=12345678&l=9";
var etc = [
'http://xyz.example.com/content/1.png',
'http://xyz.example.com/content/2,png' ];
</script>

我在 python 中尝试了以下语句,但“print m”返回 None。

soup = BeautifulSoup(page)

p = re.compile('/var abc_url = (.*);/')
all_script = soup.find_all("script", {"src":False})
for individual_script in all_script:
all_value = individual_script.string
if all_value:
m = p.match(all_value)
print m

使用 RegExr 似乎能够根据上面的正则表达式获得“var abc_url ...”的整行,但在我的代码中它不起作用。想知道如何获取此 URL 值?

谢谢

最佳答案

您无法使用 BeautifulSoup 解析 Javascript。本质上,您可以使用 BS 获取脚本标记的内容,然后开始使用股票 python 将 Javascript 作为文本处理。就像使用 str.split 的简单字符串处理或更复杂的正则表达式处理一样。以下代码打印您要查找的字符串:

p = re.compile('var abc_url = (.*);')        
for script in soup.find_all("script", {"src":False}):
if script:
m = p.search(script.string)
print m.group(1)

请务必使用 re.search 而不是 re.match,因为 re.match 仅匹配字符串的开头,但您的字符串中有前导空格。并从您的正则表达式字符串中删除斜杠。

最后,re.search 和 re.match 的返回类型都是所谓的 Match 对象,其计算结果为 bool 值。当匹配对象匹配时,组方法返回匹配组。 group(0) 返回整个匹配,group(1) 第一个带括号的子组,依此类推。

关于regex - beautifulsoup 从 javascript 变量中获取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27040823/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com