如何修复attributeError:resultset对象没有属性' get_text'

发布于 2025-02-03 01:53:39 字数 779 浏览 1 评论 0原文

我试图根据星星从GitHub获取3D主题的顶级存储库。

topic_page_url = 'http://github.com/topics/3d'
response = requests.get(topic_page_url)
topic_doc = BeautifulSoup(response.text,'html.parser')

star_tags = topic_doc.find_all('span',{'class':'Counter js-social-count'})
#print(star_tags[0].text) has given result 11.k
def parse_star_count (stars_str):
    stars_str = stars_str.strip()
    if stars_str[-1] == 'k':
      return int(float(stars_str[:-1]) * 1000)  
    return int(stars_str)

#it's working if it's only one element
parse_star_count(star_tags[0].get_text().strip( ))

#if i try to print all it is showing the error 
parse_star_count(star_tags.get_text().strip( )) 

这是错误

属性:ResultSet对象没有属性“文本”。您可能正在处理像单个项目一样的项目列表。当您打算致电find()时,您是否致电find_all()?

I'm trying to get the top repositories of 3d topic from github based on the stars.

topic_page_url = 'http://github.com/topics/3d'
response = requests.get(topic_page_url)
topic_doc = BeautifulSoup(response.text,'html.parser')

star_tags = topic_doc.find_all('span',{'class':'Counter js-social-count'})
#print(star_tags[0].text) has given result 11.k
def parse_star_count (stars_str):
    stars_str = stars_str.strip()
    if stars_str[-1] == 'k':
      return int(float(stars_str[:-1]) * 1000)  
    return int(stars_str)

#it's working if it's only one element
parse_star_count(star_tags[0].get_text().strip( ))

#if i try to print all it is showing the error 
parse_star_count(star_tags.get_text().strip( )) 

This is the error

AttributeError: ResultSet object has no attribute 'text'. You're probably treating a list of items like a single item. Did you call find_all() when you meant to call find()?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

給妳壹絲溫柔 2025-02-10 01:53:39

beautifuresoup find_all()方法返回结果集对象。您可以通过使用Type()函数来验证这一点:

type(star_tags)
bs4.element.ResultSet

要从每个元素获取文本,请尝试循环浏览每个元素,然后在其上调用get_text()方法。

for star in star_tags:
    print(star.get_text())

BeautifulSoup find_all() method returns resultset object. You can verify that by using type() function:

type(star_tags)
bs4.element.ResultSet

To get the text from each element, try to loop through each element and then call get_text() method on it.

for star in star_tags:
    print(star.get_text())
我要还你自由 2025-02-10 01:53:39

您可能需要使用循环的循环循环:

topic_page_url = 'http://github.com/topics/3d'
response = requests.get(topic_page_url)
topic_doc = BeautifulSoup(response.text,'html.parser')

star_tags = topic_doc.find_all('span',{'class':'Counter js-social-count'})
#print(star_tags[0].text) has given result 11.k
def parse_star_count (stars_str):
    stars_str = stars_str.strip()
    if stars_str[-1] == 'k':
      return int(float(stars_str[:-1]) * 1000)  
    return int(stars_str)

for star_tag in star_tags:
    parse_star_count(star_tag.get_text().strip( ))

You might want to loop through the results, using a for loop:

topic_page_url = 'http://github.com/topics/3d'
response = requests.get(topic_page_url)
topic_doc = BeautifulSoup(response.text,'html.parser')

star_tags = topic_doc.find_all('span',{'class':'Counter js-social-count'})
#print(star_tags[0].text) has given result 11.k
def parse_star_count (stars_str):
    stars_str = stars_str.strip()
    if stars_str[-1] == 'k':
      return int(float(stars_str[:-1]) * 1000)  
    return int(stars_str)

for star_tag in star_tags:
    parse_star_count(star_tag.get_text().strip( ))
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文