我正在尝试从我的漂亮汤对象中提取锚元素,并使用共同的类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)
没有打开任何标签。打印链接给出了一个空白列表
答案 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