Python:find_all()返回一个空列表

Python:find_all()返回一个空列表,python,beautifulsoup,python-requests,Python,Beautifulsoup,Python Requests,我正在尝试制作一个机器人,一旦一个新产品在网站上上线,它就会给我发送一封电子邮件 我试图通过请求和美化小组来做到这一点 这是我的代码: import requests from bs4 import BeautifulSoup URL = 'https://www.vinted.fr/vetements?search_text=football&size_id[]=207&price_from=0&price_to=15&order=newest_first'

我正在尝试制作一个机器人,一旦一个新产品在网站上上线,它就会给我发送一封电子邮件

我试图通过请求和美化小组来做到这一点

这是我的代码:

import requests
from bs4 import BeautifulSoup

URL = 'https://www.vinted.fr/vetements?search_text=football&size_id[]=207&price_from=0&price_to=15&order=newest_first'

headers = {'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36"}

page = requests.get(URL, headers=headers)

soup = BeautifulSoup(page.content, 'html.parser')

products = soup.find_all("div", class_="c-box")

print(len(products))

接下来,我想在循环中比较新请求前后的产品数量

但当我试图查看找到的产品数量时,我得到一个空列表:
[]

我不知道如何解决这个问题

我使用的div在其他div中,我不知道它是否有关系


提前感谢

您试图解析的网站有问题

在客户端使用javascript将网站完全加载后,代码中的网站将生成您要查找的元素(
div.c-box
)。所以就像:

浏览器从服务器获取HTML源--(1)-->浏览器加载HTML源时加载的JS文件-->JS文件将元素添加到HTML源--(2)-->这些元素将加载到浏览器


您无法通过
请求.get
获取所需的数据,因为
请求.get
方法只能在第(1)点获取HTML源代码,但网站会在第(2)点加载数据。要获取此类数据,应使用自动化浏览器模块,如
selenium

您应始终检查数据

使用
soup.decode('utf-8')
将BeautifulSoup对象转换为字符串,并将其写入文件。然后检查你从网站上得到了什么。在本例中,没有具有c-box类的元素


您应该使用
selenium
而不是
requests

当我运行您的脚本时,我得到了403。所以,可能soup对象没有解析所需的dom。谢谢,我要看selenium的教程!