如何使用id =而不是类名提取'a'元素的href属性

时间:2018-02-27 16:03:10

标签: python-3.x beautifulsoup python-requests

我有以下内容:

<div id="header-author" class="some random class">
        <a id="author-text" class="some random class" href="/page?id=232">
          <span class="some random class">
            Hello there
          </span>
        </a>

我只想提取id =&#34; author-text&#34;的href属性。 我不能使用类来提取,因为该类被其他具有href链接但我不想提取的元素使用

我试过这个

soupeddata = BeautifulSoup(my_html_code, "html.parser")
my_data = soupeddata.find_all("a", id= "author-text")
for x in my_data:
    my_href = x.get("href")
    print(my_href)

提前感谢您,一定会upvote /接受答案!

1 个答案:

答案 0 :(得分:0)

使用此:

my_data = soupeddata.find_all('a', attrs = {'id': 'author-text'})

您还可以在dict中传递class属性。

来自BeautifulSoup documentation

  

某些属性(如HTML 5中的data- *属性)具有名称   不能用作关键字参数的名称:

data_soup = BeautifulSoup('<div data-foo="value">foo!</div>') 
data_soup.find_all(data-foo="value") 
# SyntaxError: keyword can't be an expression
     

您可以通过放置它们来在搜索中使用这些属性   进入字典并将字典传递给find_all()as   attrs论点:

data_soup.find_all(attrs={"data-foo": "value"}) 
# [<div data-foo="value">foo!</div>]