我正在使用Selify WebDriver
从一个加载了JavaScript的网站收集图像的URL。下面的代码似乎只返回了大约240个链接中的160个。为什么会出现这种情况--因为使用了JavaScript呈现?
有没有办法调整我的代码来绕过这个问题?
driver = webdriver.Chrome(ChromeDriverManager().install(), options = chrome_options)
driver.get('https://www.politicsanddesign.com/')
img_url = driver.find_elements_by_xpath("//div[@class='responsive-image-wrapper']/img")
img_url2 = []
for element in img_url:
new_srcset = 'https:' + element.get_attribute("srcset").split(' 400w', 1)[0]
img_url2.append(new_srcset)
1条答案
按热度按时间lxkprmvk1#
您需要等待加载所有这些元素。
推荐的方法是使用
WebDriverWait
expected_conditions
显式等待。此代码为我提供了
img_url2
列表中的760-880个元素:我不确定这个代码是否足够稳定,所以如果需要,您可以激活
wait
行和下一行之间的延迟,以获取所有这些img_url
。编辑:
一旦浏览器打开,您将需要关闭页面的过滤器,然后一直滚动到页面底部,因为它不会在呈现时自动加载所有元素;只有在您稍微处理过页面之后才会这样做。