如何在Python中从rel标签提取href值

时间:2019-10-16 14:14:05

标签: python beautifulsoup

...html...
<link rel="image_src" href="image.jpg" />
....more html....

如何在Python中使用BeautifulSoup提取图片网址

4 个答案:

答案 0 :(得分:2)

find()find_all()用于更多项目

for item in soup.find_all('link'): 
     print(item['href'])`

您还可以使用{href': True}来确保该链接具有href。然后{'rel': 'image_src'}来确保它与图像链接。

for item in soup.find_all('link', {'href': True, 'rel': 'image_src'}): 
     print(item['href'])`

最小的工作示例

from bs4 import BeautifulSoup as BS

text = '''
    <link rel="image_src" />
    <link rel="image_src" href="image1.jpg" />
    <link rel="sound_src" href="hello.mp3" />
    <link rel="image_src" href="image2.jpg" />
'''

soup = BS(text, 'html.parser')

for item in soup.find_all('link', {'href': True, 'rel': "image_src"}):
    print(item['href'])

答案 1 :(得分:1)

尝试一下:

links = soup.find_all("link", {"rel": True})
for link in links:
    print(link.attrs["href"])

答案 2 :(得分:1)

如果soupBeautifulSoup对象,则使用

hrefs = [link['href'] for link in soup.find_all('link') if link.get('href') is not None]

请注意,可能没有href属性,在这种情况下,link['href']将引发KeyError。这就是为什么我使用link.get('href')来检查是否存在。

如果您想用link查找rel="image_src",请使用

hrefs = [link['href'] for link in soup.find_all('link', {'rel': 'image_src'}) if link.get('href') is not None]

答案 3 :(得分:0)

尝试使用CSS选择器。

soup.select_one('[rel="image_src"]')['href']

OR

 soup.select_one('link[rel="image_src"]')['href']

用于多个项目。

for item in soup.select('[rel="image_src"]'):
    print(item['href'])