【问题标题】:Selenium find_element_by_xpath not working for instagramSelenium find_element_by_xpath 不适用于 instagram
【发布时间】:2020-04-25 04:08:24
【问题描述】:

我正在尝试使用 Python 和 Selenium 对 Instagram 进行网络抓取。我在定位元素方面遇到了很多问题,但是当我尝试了足够多的 xpath 时,我设法解决了问题。但是,当我尝试在网络上抓取唐纳德特朗普的以下列表时(我希望这适用于任何用户的 following 列表/页面),它就是行不通。这是它抛出的错误:

selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="f3b066159b38864"]/div/div/a"}

我通过使用 Google Chrome 的检查功能右键单击元素来获取 xpath。如果有人需要我发布完整的代码,我很乐意这样做。

【问题讨论】:

  • 检查你的id是否是动态的
  • @DipakBachhav 我该怎么做。如果是这样,我该如何解决?
  • 提供 HTML 或 url 吗?
  • 这里是网址。我无法进入 Following 页面,所以你必须自己做 https://www.instagram.com/realdonaldtrump/ @DipakBachhav
  • @DipakBachhav 这是 HTML 行 <a class="FPmhX notranslate _0imsa " title="laraleatrump" href="/laraleatrump/">laraleatrump</a>

标签: python selenium selenium-webdriver web-scraping


【解决方案1】:

试试下面的xpath::

wait = WebDriverWait(driver, 20)
element = wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(text(),'laraleatrump')]")))

注意:请在您的解决方案中添加以下导入

from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait

工作解决方案:

from selenium import webdriver
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
driver.get("https://www.instagram.com/realdonaldtrump/")
driver.maximize_window()
wait = WebDriverWait(driver, 20)

wait.until(EC.element_to_be_clickable((By.XPATH, "//a[contains(.,'following')]"))).click()

peoples =  wait.until(
            EC.visibility_of_all_elements_located((By.XPATH, "//div[@role='dialog']//div[contains(@class,'PZuss')]//a")))

        for peoplename in peoples:
            print peoplename.text

【讨论】:

  • 我希望该程序与其他用户一起工作,所以//a[contains(text(), 'laraleatrump')] 部分将无法工作。我该怎么办?
  • 您到底想要什么,抱歉,没有适当的信息无法为您提供解决方案,如果您提供更多详细信息和您尝试过的内容,将会很有用
  • 例如,我希望能够将链接更改为 https://www.instagram.com/nike 并使其仍然有效
  • 检查解决方案,即使您更改了网址,您也会得到人员列表
  • 我还有一个问题。 HTML 中的角色属性是什么?我在哪里可以看到 Google Chrome 检查中的元素角色?另外,您在哪里看到“PZuss”课程?
猜你喜欢
  • 2020-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-19
  • 1970-01-01
  • 2016-06-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多