python - Selenium 无法获取 Instagram 上的所有元素

标签 python selenium xpath selenium-chromedriver

我正在使用 Python selenium 创建一个脚本来抓取 Instagram 用户帖子。如果用户有 62 个帖子,我想获取所有 62 个帖子。

我尝试向下滚动,直到所有帖子加载并使用 xpath 及其工作获取元素/帖子。但只有 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 张图像之前,我已将这些图像保存在 variabel 上

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)

关于python - Selenium 无法获取 Instagram 上的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673172/

相关文章:

mysql - 如何以 Pythonic 方式在 MySQL 中存储 Python 字典列表?

windows - Jenkins : Selenium GUI tests are not visible on Windows

javascript - Selenium Webdriver - 仅具有精确值标识的元素,js/html

java - 无法定位元素 - 使用 selenium webdriver 在不同区域设置中自动化网站

Xpath - 只获取没有其他元素的节点内容

python - 如何在Python中通过HTTPPost方法发送大文件,上传大文件

python - Z3 更好的读取和解析 DIMACS 的方法

python - 当子列表的大小依赖于数据值(种子和扩展)时,将列表拆分为子列表

java - 当下拉列表选择时如何从网站抓取数据?

jquery - 如何让紧随其后的 sibling 到达下一个不匹配的选择器