python - Selenium find_element_by_xpath 不适用于 instagram
问题描述
我正在尝试使用 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。如果有人需要我发布完整的代码,我很乐意这样做。
解决方案
试试下面的 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
推荐阅读
- python - 'pip install 和有什么区别
' 和 'python -m pip install '? - elasticsearch - 如何在 ElasticSearch 中的索引期间从现有字段创建新字段?
- javascript - 将数组中的先前文本移动到最新文本下方而不是被覆盖
- javascript - localStorage 检查器在看起来不错时不起作用?
- c# - 如果选择了组合框中的最后一项,如何使文本框可见 c#
- android - 能够在水平滚动框中垂直滚动外部布局
- api - 服务器命令请求的 HTTP 响应正文
- python - 此代码是否有 Numpy 或 pyTorch 函数?
- javascript - 未捕获的 SyntaxError:带有引号和反引号的字符串上的意外标识符
- javascript - Oracle Apex 从剪贴板粘贴到 textarea