gpt4 book ai didi

Python BeautifulSoup 'NavigableString' 对象没有属性 'get_text'

转载 作者:太空宇宙 更新时间:2023-11-03 21:10:26 26 4
gpt4 key购买 nike

这可能看起来很简单,但我无法让它发挥作用。最近刚开始学习scraping,也遇到了这个问题。尝试了 python REPL 中的代码,它似乎可以工作,但是不确定为什么当我编码它时,它无法工作。

这是我下面的代码。所以我想做的是提取我的程序的文章标题、链接和图片,这就是我下面的内容。

from urllib.request import urlopen
from bs4 import BeautifulSoup
import requests
import json

beauty_result=[]

def scrape_b2():
soup = BeautifulSoup(urlopen('https://www.instyle.com/beauty'), 'lxml')
url = 'https://www.instyle.com'
for article in soup.find_all('article',class_='component tile media image-top type-article'):
for img in article.find_all('div',class_='component lazy-image thumbnail'):
for a in article.find('h3'):
beauty_result.append(json.dumps({
'title':a.get_text(strip=True),
'link':url+article.find('a')['href'],
'image':img.get('data-src')
}))
print(beauty_result)

if __name__ == '__main__':
scrape_b2()

这是我得到的错误的完整回溯:

D:\Coding\Python\webscrape env>python app.py
Traceback (most recent call last):
File "app.py", line 37, in <module> scrape_b2()
File "app.py", line 28, in scrape_b2 'title':a.get_text(strip=True),
File "D:\Coding\Tools\Anaconda3\envs\webscraper_practice\lib\site-packages\bs4\element.py", line 742, in getattr self.__class__.__name__, attr))
AttributeError: 'NavigableString' object has no attribute 'get_text'

这就是我解决它的方法:

def scrape_b2():
soup = BeautifulSoup(urlopen('https://www.instyle.com/beauty'), 'lxml')
url = 'https://www.instyle.com'
for article in soup.find_all('article',class_='component tile media image-top type-article'):
for img in article.find_all('div',class_='component lazy-image thumbnail'):
h3 = article.find('h3')
a_link = h3.find('a')
beauty_result.append(json.dumps({
'title': a_link.get_text(strip=True),
'link': url + a_link.get('href'),
'image': img.get('data-src')
}))
print(beauty_result)

最佳答案

您的错误是因为您无法使用 get_text() 方法,该方法特定于 Bs4 对象。

你能做的是:

h3 = article.find('h3')
a_link = h3.find('a')
beauty_result.append(json.dumps({
'title': a_link.get_text(strip=True),
'link': url + a_link.get('href'),
'image': img.get('data-src')
}))

前面的代码替换了article.find('h3')中的循环:

关于Python BeautifulSoup 'NavigableString' 对象没有属性 'get_text',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55100481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com