я пытаюсь вычеркнуть имена из Instagram с помощью селена webdriver? - PullRequest
0 голосов
/ 01 сентября 2018

так что я пытаюсь получить список названий комментариев к сообщению, но массив возвращается пустым? и я хотел бы получить список имен людей, которым понравился пост, но я все еще получаю тот же результат. Я пытался использовать имя класса и ничего.

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

username ="________"
password ="_______"
search = "_______"

#getting webdriver path 
chrome_path =r"C:\Users\dr_m_\Desktop\chromedriver.exe"

#opening google chrome 
driver = webdriver.Chrome(chrome_path)

#going to instagram
driver.get("https://www.instagram.com/accounts/login/?hl=en")

#entering the username 
Users=driver.find_element_by_name('username')
Users.send_keys(username)
time.sleep(2)

#entering password
pas=driver.find_element_by_name('password')
pas.send_keys(password)

 #clicking the login button 
 driver.find_element_by_xpath("""//*[@id="react-root"]/section/main/div/article/div/div[1]/div/form/span""").click()

 time.sleep(5)

 #go to account 
 driver.get("https://www.instagram.com/"+search+"/")

 time.sleep(10)

 #open first pic
 driver.find_element_by_xpath("""//*[@id="react-root"]/section/main/div/div[2]/article/div[1]/div/div[1]/div[1]/a/div""").click()

 time.sleep(5)

 #getting the XPATH of the comments 
 c_name=driver.find_elements_by_xpath("""//*[@id="react-root"]/section/main/div/div/article/div[2]/div[1]/ul/li[2]/div/div/div/a""")

#print name
for x in range(0,len(c_name)):
    print("name:")
    print(c_name[x])

Я пробовал другие способы, но все равно получал тот же результат. это не пойдет по кругу.

1 Ответ

0 голосов
/ 01 сентября 2018
  1. Получить все видимые комментарии к фотографии - это может также включать комментарии владельца профиля и текст кнопки «Загрузить дополнительные комментарии»

  2. Получить количество комментариев

  3. для всех найденных элементов переходите во все теги 'li' до тега 'a'

  4. получить атрибут заголовка из тега 'a', который содержит имя комментатора

Примечание - если используется условие, так как в некоторых случаях тег li не содержит имени комментатора

Использование xpath

 all_comments=driver.find_elements_by_xpath("//ul/li")
 total_comment_count = len(total_comment_count)
 for x in range(1,total_comment_visible):
    if driver.find_element_by_xpath("//ul//li["+x+"]/div/div/div/a"):
       print driver.find_element_by_xpath("//ul//li["+x+"]/div/div/div/a").get_attribute("title")

Использование cssSelector

c_name=driver.find_elements_by_css_selector("a.FPmhX.notranslate.TlrDj")

#print name
for x in range(0,len(c_name)):
    print("name:")
    print(c_name[x])
...