gpt4 book ai didi

python - 将 Regex 与 Python 结合使用来获取 iframe src 的特定部分

转载 作者:行者123 更新时间:2023-12-01 01:05:54 28 4
gpt4 key购买 nike

我 try catch 我想要更改的 iframe src 内容。我无法直接访问 HTML,我从 API 获取 HTML。

您可以在下面看到一些 iframe 示例:

<iframe src="https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/f2c5f6ca3a4610c55d70cb211ef9d977" webkitallowfullscreen="" width="490">
<iframe allowfullscreen="" frameborder="0" height="276" mozallowfullscreen="" scrolling="no" src="https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/%20f2c5f6ca3a4610c55d70cb211ef9d977" webkitallowfullscreen="" width="490"></iframe>

我有许多其他类型的 iframe 示例,它们唯一的共同点是 src 内容的这一部分 https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302

我创建以下代码来查找元素:

// some code
regex_page_embed = r"http.?://fast\.player\.liquidplatform\.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/*"
soup = BeautifulSoup(page_html, 'html.parser')
page_elements = list(soup.children)
for element in page_elements:
try:
s1 = re.search(regex_page_embed, str(element))
if s1:
print(s1)
print(s1.group())

之后,我创建了更多可以使用的代码,并使用 API 有效地更改了 HTML,我认为没有必要将其放在这里。但是当我使用时:

print(s1)
print(s1.group())

我得到了以下结果:

<_sre.SRE_Match object; span=(686, 771), match='https://fast.player.liquidplatform.com/pApiv2/emb>
https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/
<_sre.SRE_Match object; span=(126, 211), match='https://fast.player.liquidplatform.com/pApiv2/emb>
https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/
<_sre.SRE_Match object; span=(686, 771), match='https://fast.player.liquidplatform.com/pApiv2/emb>
https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/
<_sre.SRE_Match object; span=(227, 312), match='https://fast.player.liquidplatform.com/pApiv2/emb>
https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/

我想获取iframe src内容的最后一部分。在下面的例子中

<iframe src="https://fast.player.liquidplatform.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/f2c5f6ca3a4610c55d70cb211ef9d977" webkitallowfullscreen="" width="490">

f2c5f6ca3a4610c55d70cb211ef9d977 是我想要的部分。

print(s1)print(s1.group()) 不显示 src 内容的最后一部分,如何获取iframe src 内容?

最佳答案

更好的正则表达式,用于捕获整个 url,同时在 <iframe 之间包含任何可选内容标签和src标签是这个,

<iframe .*?\bsrc="(https?://fast\.player\.liquidplatform\.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/[^"]+)

使用此正则表达式进行匹配并从 group1 捕获您的网址。

<强> Online Demo

这是更新后的 Python 代码,

regex_page_embed = r'<iframe .*?\bsrc="(https?://fast\.player\.liquidplatform\.com/pApiv2/embed/e50a2b66dc19adc532f288eb4bf2d302/[^"]+)'
soup = BeautifulSoup(page_html, 'html.parser')
page_elements = list(soup.children)
for element in page_elements:
try:
s1 = re.search(regex_page_embed, str(element))
if s1:
print(s1.group(1)) # extract url using first group

关于python - 将 Regex 与 Python 结合使用来获取 iframe src 的特定部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55364264/

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