您好,我是Bs4的新手,我需要从某个网站上获取所有产品,但我试图获取这些值,但它仅显示页面中100个产品中的前15个
from bs4 import BeautifulSoup
import requests
base_url = 'http://www.elkay.com/sinks/undermount#q=|100|0|1|'
response = requests.get(base_url)
soup = BeautifulSoup(response.content.decode('utf-8'), "html.parser")
is_row = soup.findAll('div', attrs={'class': 'product result_detail'})
print(is_row)
有人可以帮助我吗?
这里is_row是一个len-15的结果集,实际上它们是100个产品
将提供任何帮助。谢谢
答案 0 :(得分:2)
如果您检查该URL是否具有“ not-that-fast”连接(例如mine:D),则可以看到它仅加载15个项目,在完全加载之后,它会发送ANOTHER请求以加载其余项目。这就是为什么您仅使用代码获得前15个项目的原因(仅获得第一个请求的响应)
使用Chrome开发者工具(按F12键),您可以轻松找到正确的请求:
我不会复制完整的请求,但是它有一个数据参数:
data = {
'contentBeginIndex': '0^',
'productBeginIndex': '0^',
'showPageSize': '100^',
}
发送这样的请求应该可以让您获得全部100件商品。您还可以通过更改... BeginIndex获得以下页面。