我有一些基本的代码用于从页面中提取数据,问题是一周前它停止工作并且我收到错误
'NoneType' object has no attribute 'find_all'
,也许页面代码中的某些内容发生了变化,我已经尝试修复它但是我不能。帮帮我,谢谢。
import requests
from bs4 import BeautifulSoup as bs
headers = {
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko)
Ubuntu Chromium/71.0.3578.80 Chrome/71.0.3578.80 Safari/537.36",
}
url = "https://www.weplay.cl/new-arrival-funko-pop#/w/0/list/all/"
req = requests.get(url)
soup = bs(req.text, 'html.parser')
contenedor_de_productos = soup.find(class_="products-grid products-grid grid")
lista_de_productos = contenedor_de_productos.find_all('li', class_='product-item')
for producto in lista_de_productos:
texto_producto = producto.find(class_='product-item-name').text
texto_producto = texto_producto.replace('\n', '').replace('\t', '').replace(',',
'').replace('"', '').strip()
print(texto_producto)
是的,他们改变了网站结构,之前他们可能会在第一个请求本身中获取 HTML 页面中的所有数据,但现在数据来自不同的请求。数据来自 JavaScript 请求,并且它们正在渲染它,因此您的 XPATH 和代码无法正常工作。如果您看到给定 URL 的响应,您会得到类似“请稍等...”的信息。
为了使您的代码正常工作,我们有两种解决方案,即
我发现您需要产品名称,因此您可以简单地从上述请求中获取所有这些产品名称。