html img标签属性在第一个是不同于其他我无法获得链接?网页抓取Python

wgeznvg7  于 2023-02-02  发布在  其他
关注(0)|答案(1)|浏览(89)

下面的代码就是一个例子。
在第一个img上,你可以看到类是(class_name),src=包含一个链接,但是在其他img标签中,你会看到类是不同的,没有src属性,只有data-src。
因此,当我尝试获取链接时,如果我将(get('src')更改为get('data-src')),我只能获取第一个链接或其余链接的链接。
有没有办法得到链接只有作为文本?

import requests
from bs4 import BeautifulSoup

url = 'website.com'
soup = BeautifulSoup.get(url)

links = {
    '<img class="class_name" src="https://website1.png"/>',
    '<img class="class_name late" data-src="https://website2.png"/>',
    '<img class="class_name late" data-src="https://website3.png"/>',
}

for link in links:
    link.find('img', class_='class_name').get('src')
    print(link)

谢谢
我需要这样的输出:

https://website1.png
https://website2.png
https://website3.png
4ngedf3f

4ngedf3f1#

只需选择所有图像,迭代ResultSet并检查属性是否可用于提取其值并打印它或附加它,以避免重复。

示例
from bs4 import BeautifulSoup

html = '''
<img class="class_name" src="https://website1.png"/>
<img class="class_name late" data-src="https://website2.png"/>
<img class="class_name late" data-src="https://website3.png"/>
'''
soup = BeautifulSoup(html)

for link in soup.select('img.class_name'):
    if link.get('src'):
        print(link.get('src'))
    else:
        print(link.get('data-src'))
输出
https://website1.png
https://website2.png
https://website3.png

相关问题