Python BeautifulSoup4 查找属性

Python BeautifulSoup4 Finding Attributes

提问人:Notsuj 提问时间:8/2/2023 更新时间:8/2/2023 访问量:19

问:

现在我正在构建一个网络爬虫来抓取标签后的实际 href 链接,然后继续并制作一个包含我抓取的所有值的文件。

我只想获取“/groups/1234123”属性值和 ID 名称(“InsertNameHere”),但没有任何效果。

from bs4 import BeautifulSoup

htmltext = ''' <div class="sidenav">
         <div class="sidenav-head" id="InsertNameHere">   
          <a href="/groups/1234123/">
           InsertNameHere
          </a>
         </div>
        </div>'''
 
soup = BeautifulSoup(htmltext, 'html.parser')

s = soup.find_all('a')
link= s.find('href')

print(link)

我得到

“AttributeError:ResultSet 对象没有属性'find'。您可能将元素列表视为单个元素。当你打算调用 find() 时,你是否调用了 find_all()?

我试图将link = s.find('href')link = s.attrs

在那之后,它说我有一个不同的属性错误。 我还需要保留该属性,因为我需要抓取多个 id。s.find_all()

python-3.x beautifulsoup html 解析

评论


答:

0赞 Driftr95 8/2/2023 #1

你可以试试 link= s[0]['href']

正如错误消息所示,您应该使用 而不是 which 返回 ResultSet(类似于标记列表)。此外,您需要使用甚至简单地使用 ,而不是 ;有关更多详细信息,请参阅文档s = soup.find('a')find_all.get('href')['href'].find

0赞 Jack Fleeting 8/2/2023 #2

这可能很简单

s = soup.select_one('a[href]')
print(s['href'])