首页 > 解决方案 > 我怎样才能获得类似于下面共享的示例的 srcs 中的值?

问题描述

我获取页面中所有链接的代码:

from bs4 import BeautifulSoup

import requests
r  = requests.get("http://site-to.crawl")
data = r.text
soup = BeautifulSoup(data)

for link in soup.find_all('a'):
    print(link.get('href'))

但是,我确实想要例如两个 src 的内容,如下所示:

"mov_bbb.mp4" and `"mov_bbb.ogg"`


<video id="video1" style="width:600px;max-width:100%;" controls="">
        <source src="mov_bbb.mp4" type="video/mp4">
        <source src="mov_bbb.ogg" type="video/ogg">
      </video>

我如何才能实现这一点,不仅适用于这个例子,而且适用于稍后我将获得 src 的所有视频视频标签。

另一个例子:

<video controls="" src="https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4" poster="https://peach.blender.org/wp-content/uploads/title_anouncement.jpg?x11217" width="620">

</video>

我想要什么https://archive.org/download/BigBuckBunny_124/Content/big_buck_bunny_720p_surround.mp4

我希望代码适用于示例示例和基本相似的示例,当有标签视频我想要 src 时,它可能直接在同一个 <> 或其子中

标签: python-3.xparsingbeautifulsouprequesthtml-parsing

解决方案


您可以在解析的 html 中获取标签。然后只需获取这些标签的 src 即可。

试试这个:

 for i in range(len(soup.find_all('source'))):
     print(soup.find_all('source')[i]['src'])

***编辑

所以我们可以先检查是否有 src 属性。如果没有,它将检查子标签并打印它们的 src。

for video in soup.find_all('video',attrs={'src':True}):
    print(video['src'])
for video in soup.find_all('video',attrs={'src':False}):
    for i in video.find_all('source'):
        print(i['src'])

推荐阅读