如何提取嵌套在多个除法元素中的锚元素

时间:2019-05-27 08:04:07

标签: python html web-scraping beautifulsoup css-selectors

我正在尝试从我的漂亮汤对象中提取锚元素,并使用共同的类attr将其嵌套在多个分区中。重复这些划分并用一些脚本分隔

我试图利用锚元素中的公共类属性来提取它们

我得到的代码:

<div id='container'>
<div class='nested'>
<a href='some url' class='link'>
</a>
</div>
</div>

#some scripts ....

<div id='container'>
<div class='nested'>
<a href='some url' class='link'>
</a>
</div>
</div>

我尝试过的事情:

import requests, bs4, webbrowser

webpage=requests.get('some url')
webpage.raise_for_status()
soup=bs4.BeautifulSoup(webpage.text)
links=soup.select('.link a')

for i in range(0,5):
  webrowser.open('intial site url'+links[i].get('href'))
print(links)

没有打开任何标签。打印链接给出了一个空白列表

2 个答案:

答案 0 :(得分:1)

替换您的行代码:

links=soup.select('.link a')

收件人

  links=soup.find_all('a',{'class':'link'})
  print(links)

O / P:

[<a class="link" href="some url">
</a>, <a class="link" href="some url">
</a>]

要获取href形式的a标签:

for link in links:
  href = link['href']
  print(href)

答案 1 :(得分:1)

.link a将与父类为a的父母一起使用所有子标签link。它们之间的空格实际上是css descendant combinator,这意味着lhs是父级,rhs是孩子。删除要应用于相同元素的空间。请注意,您需要从匹配的标记中提取href属性。

links = [item['href'] for item in soup.select('a.link')]

如果您需要按类指定父div,则为

.nested a.link

或更简单地

.nested .link