我正在使用Python selenium创建一个脚本,用于抓取instagram用户帖子。如果用户有62个帖子,我想得到所有的62个帖子。
我试着向下滚动,直到所有的post都被加载,并使用xpath及其作品获得element/post。但只有29个元件/柱,而不是全部62个元件/桩。
driver.get("https://instagram.com/celmirashop/")
#scroll until all post loaded
scroll()
wait = WebDriverWait(driver, 15)
wait.until(EC.presence_of_element_located((By.CSS_SELECTOR, "div.eLAPa")))
time.sleep(30)
#getting list cards of posts
list_cards = driver.find_elements_by_xpath("//*[@class='v1Nh3 kIKUG _bz0w']")
print(len(list_cards))
如果用户有62个帖子,我想得到62个(全部(帖子的元素
滚动instagram时,将显示新的12张图像,但instagram将删除12张已通过的图像。我通过在滚动(每次向下滚动(时保存12个图像找到了解决方案。所以在instagram删除通过的12张图片之前,我已经在variable上保存了这些图片
driver.get("https://instagram.com/celmirashop/")
semua_url_lengkap = []
semua_url_post = []
nomor=1
for i in range(50):
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
print(nomor)
nomor+=1
#mendapatkan list tiap cards update status
article = driver.find_element_by_tag_name("article")
list_cards = article.find_elements_by_tag_name("a")
for item in list_cards:
url_lengkap=item.get_attribute("href")
semua_url_lengkap.append(url_lengkap)
segmen = url_lengkap.rsplit('/', 2)
semua_url_post.append(segmen[1])
print(len(semua_url_post))
print(semua_url_post)
他们设计应用程序的方式很难做到。这些元素是惰性加载的,所以当你滚动时,一些元素可能也会消失。
我建议使用像//a//img
这样的xpath泛型和不变的,因为它们会再次将类名更改为随机的。
此外,由于您已经有了滚动的方法,请从头开始。记录所有元素,再滚动一些,然后再次记录,再刮一些。进行循环,直到找到页面元素(如//footer
(的末尾。