我正在尝试从沃尔玛link中获取部门名称。您可以看到,首先在Departments
中左侧有7个部门(巧克力饼干、饼干、黄油饼干...)。当我单击See All Departments
时,又添加了9个类别,因此现在的数字是16。我正在尝试自动获取所有16个部门。我编写了以下代码;
from selenium import webdriver
n_links = []
driver = webdriver.Chrome(executable_path='D:/Desktop/demo/chromedriver.exe')
url = "https://www.walmart.com/browse/snacks-cookies-chips/cookies/976759_976787_1001391"
driver.get(url)
search = driver.find_element_by_xpath("//*[@id='Departments']/div/div/ul").text
driver.find_element_by_xpath("//*[@id='Departments']/div/div/button/span").click()
search2 = driver.find_element_by_xpath("//*[@id='Departments']/div/div/div/div").text
sep = search.split('\n')
sep2 = search2.split('\n')
lngth = len(sep)
lngth2 = len(sep2)
for i in range (1,lngth):
path = "//*[@id='Departments']/div/div/ul/li"+"["+ str(i) + "]/a"
nav_links = driver.find_element_by_xpath(path).get_attribute('href')
n_links.append(nav_links)
for i in range (1,lngth2):
path = "//*[@id='Departments']/div/div/div/div/ul/li"+"["+ str(i) + "]/a"
nav_links2 = driver.find_element_by_xpath(path).get_attribute('href')
n_links.append(nav_links2)
print(n_links)
print(len(n_links))
当我运行代码时,最后,我可以看到n_links
数组内部的链接。但问题是;有时候有13个链接,有时候有14个。应该是16个,但我还没有看到16个,只有13或14个。我试图在search2
行之前添加time.sleep(3)
,但没有成功。您能帮助我吗?
4条答案
按热度按时间xkftehaa1#
我认为你是使这比它更复杂。你是正确的,你可能需要等待得到的部门,如果你是点击按钮。
ldioqlga2#
要打印所有产品(16),您可以尝试使用CSS选择器搜索它们:
.collapsible-content > ul a, .sometimes-shown a
.在您的示例中:
输出:
ffvjumwh3#
仅使用
beautifulsoup
:图纸:
xu3bshqb4#
为什么不使用
.visibility_of_all_elements_located
?控制台输出:
需要以下导入: