【问题标题】:how to get the dm text in instagram from selenium?如何从 selenium 获取 instagram 中的 dm 文本?
【发布时间】:2023-03-28 09:20:01
【问题描述】:

我想在我的控制台上获取发件人的文本,我尝试了美丽的汤来刮,但没有奏效。我在 selenium 上使用了其他几个功能,例如 XPath 和不同的类名,但无法解决这个问题。

这是我的代码,

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

myemail = "<username>"
mypassword = "<password>"
friendusernames = ["<>sender username"]
PATH = "C:/Chromedriver.exe"
driver = webdriver.Chrome(PATH)
url = "https://www.instagram.com/"
driver.get(url)


usernamebox = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.NAME, 'username')))
usernamebox.send_keys(myemail)
passwordbox = driver.find_element_by_name('password')
passwordbox.send_keys(mypassword)
loginbutton = driver.find_element_by_css_selector('.Igw0E')
loginbutton.click()
print("Logging in")

dmbtn = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.xWeGp')))
dmbtn.click()

notificationsnotnow = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.HoLwm')))
notificationsnotnow.click()


for friendusername in friendusernames:
    searchuser = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.CSS_SELECTOR, '.EQ1Mr')))
    searchuser.click()

searchuserbox = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.j_2Hd')))
searchuserbox.send_keys(friendusername)

time.sleep(3)
firstuser = driver.find_element_by_xpath(
    '/html/body/div[5]/div/div/div[2]/div[2]/div[1]/div')
firstuser.click()


pressingnext = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, '.rIacr')))
pressingnext.click()


names = driver.find_element_by_class_name(
    '_7UhW9 > span').text

# names = driver.find_element_by_class_name(
#     '.xLCgt').text

# names = driver.find_element_by_class_name(
#     '.MMzanKV-D4').text

# names = driver.find_element_by_class_name(
#     '.p1tLr').text
# names = driver.find_element_by_class_name(
#     '.hjZTB').text

print(names)

time.sleep(1)

我想在我的控制台上显示此文本

如何,我可以这样做吗??

【问题讨论】:

  • 您能否详细描述一下“无法解决”?

标签: python selenium selenium-webdriver instagram


【解决方案1】:

由于互联网上的每个页面都包含 HTML,我会通过右键单击检查页面并找出哪个标签属于聊天中的消息,然后我会找到标签的 XPath 或类,最后得到它的 innerText用于检索字符串。

【讨论】:

  • 是的,您确实是正确的,但我收到了一个错误。我将这行代码用于文本names = driver.find_element_by_xpath('//*[@id="react-root"]/section/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div/div/div/div/span').text ,我收到了这个错误selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="react-root"]/section/div/div[2]/div/div/div[2]/div[2]/div/div[1]/div/div/div[3]/div[2]/div/div/div/div/div/div/div/div/span"}
  • 如果您确定 XPath 是正确的,可能是因为在您尝试查找该元素时尚未加载该元素。使用WebDriverWait 等待元素加载,然后获取它的值。
猜你喜欢
  • 2020-11-18
  • 2022-01-07
  • 1970-01-01
  • 2012-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多