【问题标题】:How do I choose a part of bs4.element.Tag, do I have to convert it into a string?如何选择 bs4.element.Tag 的一部分,是否必须将其转换为字符串?
【发布时间】:2018-01-12 09:52:10
【问题描述】:

我有一个格式为 的超链接列表(添加空格以便显示)。

很遗憾,格式没有完整的地址,所以我想通过将两个字符串拼接在一起来添加网址的开头。我有一些看起来像这样的代码;

import requests
from bs4 import BeautifulSoup

r_2 = requests.get('http://www.website.com/linkaddress/')

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

links = soup.find_all('a')

links_list = []

for link in links:
    links_list.append(link)

link_end = links_list[9:-4]
# select information between 9th position and 4th last position 
link_start = 'http://www.website.com/'
master_links = link_start + link_end

print master_links

我在尝试从超链接中仅选择链接地址时遇到问题,因为它实际上不是字符串,而是 bs4.element.Tag。有没有办法只能从列表“links_list”中的每个条目中选择链接地址?还是我必须将其转换为字符串?

【问题讨论】:

    标签: python string python-2.7 beautifulsoup


    【解决方案1】:

    其实你不需要指定attrs,只需简单的: link['href']

    attrs 适用于不确定href 是否出现在某个标签的属性中的情况:

    if 'href' in link.attrs:
        print(link['href'])
    

    【讨论】:

      【解决方案2】:

      每个节点都有一个属性“attrs”,它是一个 python 字典,包含该节点上定义的所有属性。

      所以,地址可以检索为:

      link.attrs['href']
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-05
        • 2019-06-01
        • 2014-01-24
        • 2012-10-22
        • 2023-02-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多