我试图网页抓取网站不知何故,它只显示24个结果,我如何加载所有结果与隐藏的自动测试页?
下面的代码:
# import library
from selenium import webdriver
from selenium.webdriver import Chrome
import pandas as pd
import bs4
#create list
items = []
prices = []
volumes = []
driver = webdriver.Chrome()
driver.get("https://www.fairprice.com.sg/category/milk-powder")
soup = bs4.BeautifulSoup(driver.page_source, 'lxml')
allelem = soup.find_all('div',class_='sc-1plwklf-0 iknXK product-container')
#read all element
for item in allelem:
items.append(item.find('span', class_='sc-1bsd7ul-1 eJoyLL').text.strip())
#read price
for price in allelem:
prices.append(price.find('span', class_='sc-1bsd7ul-1 sc-1svix5t-1 gJhHzP biBzHY').text.strip())
#read volume
for volume in allelem:
volumes.append(volume.find('span', class_='sc-1bsd7ul-1 eeyOqy').text.strip())
print(items)
print(volumes)
print(prices)
#create dataframe
final_array = []
for item,price,volume in zip(items,prices,volumes):
final_array.append({'Item':item,'Volume':volume,'Price':price})
# covert to excel
df = pd.DataFrame(final_array)
print(df)
df.to_excel('ntucv4milk.xlsx',index=False)
码结束
1条答案
按热度按时间8cdiaqws1#
我的建议是定义三个列表(商品、价格、成交量),通过向下滚动页面,这些列表会逐渐增长。如果您有一个
elements
的Web元素列表,您可以通过运行然后,您所要做的就是等待新项加载,然后将它们添加到这三个列表中,如果在给定的时间(
max_wait
,即10秒)内没有项加载,则可能没有更多项要加载,我们可以中断循环。产出