为了账号安全,请及时绑定邮箱和手机立即绑定

蟒蛇美汤 iframe 文本提取

蟒蛇美汤 iframe 文本提取

喵喵时光机 2022-09-13 17:46:55
我是美丽汤的新手,我试图从这个网站中提取一些原始数据,我做了解析。from urllib.request import urlopenfrom bs4 import BeautifulSouppath='https://www.esquire.com/entertainment/tv/g28380481/best-anime-2019/'f = urlopen(path)html = str(f.read())soup = BeautifulSoup(html, 'html.parser')txt = soup.find_all('iframe')我得到了这个bs4对象[<iframe allowfullscreen="true" data-src="//www.youtube.com/embed/6M7f41OJfcM?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/0glqBjvku84?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/YKJf876thxw?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/SdFgPGSmy0Y?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/Ie-bo3IulmY?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/ApLudqucq-s?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/FpRk3m3Y-Zg?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/J9tu253SOas?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/lCPf9SA4mgU?enablejsapi=1" frameborder="0"></iframe>, <iframe allowfullscreen="true" data-src="//www.youtube.com/embed/neqxQdpTyXE?enablejsapi=1" frameborder="0"></iframe>]现在我想从每个元素中提取网站,我已经尝试了下面的代码。我会知道要使用哪个美丽汤命令,而不是将每个元素替换为字符串a进行搜索。import retrailers=[]pattern='(www.+1)'for line in txt:  line=str(line)  trailers.append(re.search(pattern,line).group(0))
查看完整描述

1 回答

?
函数式编程

TA贡献1807条经验 获得超9个赞

这里不需要使用正则表达式。


一个更简单的方法是使用美丽的汤元素的属性,如:attrs


from urllib.request import urlopen

from bs4 import BeautifulSoup

path='https://www.esquire.com/entertainment/tv/g28380481/best-anime-2019/'

f = urlopen(path)

html = str(f.read())

soup = BeautifulSoup(html, 'html.parser')

txt = soup.find_all('iframe')


for element in txt:    

    print(element.attrs["data-src"][2:])

这会产生相同的结果:


www.youtube.com/embed/6M7f41OJfcM?enablejsapi=1

www.youtube.com/embed/0glqBjvku84?enablejsapi=1

www.youtube.com/embed/YKJf876thxw?enablejsapi=1

www.youtube.com/embed/SdFgPGSmy0Y?enablejsapi=1

www.youtube.com/embed/Ie-bo3IulmY?enablejsapi=1

www.youtube.com/embed/ApLudqucq-s?enablejsapi=1

www.youtube.com/embed/FpRk3m3Y-Zg?enablejsapi=1

www.youtube.com/embed/J9tu253SOas?enablejsapi=1

www.youtube.com/embed/lCPf9SA4mgU?enablejsapi=1

www.youtube.com/embed/neqxQdpTyXE?enablejsapi=1

您可以在此处阅读有关如何处理属性的更多信息:https://www.crummy.com/software/BeautifulSoup/bs4/doc/#attributes


查看完整回答
反对 回复 2022-09-13
  • 1 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号