ran202 发表于 2022-6-30 18:41:31

爬下html的元素之后想要获取其中的超链接报错了

问题:解析一段网址元素后内容如下:
<h4><a href="https://research.com/u/pierre-bourdieu" title="Read more">Pierre Bourdieu</a></h4>


<span class="sh">Collège de France,
France</span>

需要获取其中的超链接内容

代码如下
for result in soup.find_all('span', class_="col col--5 col--tablet"):
    for nameUrl in result:
      print(nameUrl.get('href'))

结果报错
AttributeError: 'NavigableString' object has no attribute 'get'

请教一下各位这个是什么问题?

Twilight6 发表于 2022-6-30 18:45:52


nameUrl.get('href') 改成 nameUrl.href

直接 .href 试试,报错显示 NavigableString 没有 get 属性

ran202 发表于 2022-6-30 19:08:30

Twilight6 发表于 2022-6-30 18:45
nameUrl.get('href') 改成 nameUrl.href

直接 .href 试试,报错显示 NavigableString 没有 get 属性


用了您的方法报错变成:
AttributeError: 'NavigableString' object has no attribute 'href'

看了下数据对象的类型是
<class 'bs4.element.NavigableString'>
<class 'bs4.element.Tag'>
这两种

ran202 发表于 2022-6-30 19:19:12

这里自己回一下吧,问题解决了,主要就是在find_all()之后返回的对象仍然是tag对象,从这个地方入手,就是考虑怎么解析和提取tag对象里的元素,找了一下资料后代码改成
for result in soup.find_all('span', class_="col col--5 col--tablet"):
    nameUrl=result.a['href']
就ok了
页: [1]
查看完整版本: 爬下html的元素之后想要获取其中的超链接报错了