Проблемы с получением href — Автоматизация Instagram

#python #selenium #instagram #hashtag

Вопрос:

Я не первый и не последний, кто попал в это: не могу получить все ссылки из instagram. Хотя это обычное дело, я не могу получить все ссылки из класса, и все решения, которые я пробовал до сих пор, потерпели неудачу. Так что, был бы признателен за руку или удар в правильном направлении.

Я ищу хэштег:

 hashtags = '#hashtag'
search.send_keys(hashtags)
time.sleep(2)
search.send_keys(Keys.ENTER)
time.sleep(2)
search.send_keys(Keys.ENTER)

link_list=[]

links = driver.find_elements_by_class_name('Nnq7C weEfm')

for link in links:
    link_list.append(link.get_attribute('href'))
    
    print(link_list)
 

Есть несколько классов верхнего уровня, которые выбирают все фотографии, ни один из которых не дает мне href.
Я могу получить href из v1Nh3 kIKUG _bz0w — класса, определяющего отдельную фотографию на странице результатов поиска. Несмотря на v1Nh3 kIKUG _bz0w то, что на странице 33, я получаю только одну ссылку.

как выглядит консоль firefox

Комментарии:

1. Чтобы получить значения href, вам нужно указать xpath /a в теге a, а затем присвоить ему атрибут get_attribute(‘href’).

2. !!! Сработало идеально, как по волшебству!

3. На самом деле это единственное решение, которое извлекает hrefs. Тем не менее, он дает мне все ссылки на странице, включая предложенных друзей и даже хэштеги соседей. Интересно, как рассортировать только те, которые мне нужны, по нужному классу? ` «если `» снова не возвращает ничего.

Ответ №1:

  links=[x.get_attribute("href") for x in driver.find_elements_by_xpath("//div[@class='v1Nh3 kIKUG  _bz0w']/a")]
 

Просто используйте /a в классе и получите такие ссылки. Я бы нашел более подходящий xpath, так как это имя класса выглядит динамичным.

Комментарии:

1. hrefElements = wait.until(EC.visibility_of_all_elements_located((By.XPATH, "//div[@class='v1Nh3 kIKUG _bz0w']/a"))) elements_link = [x.get_attribute("href") for x in hrefElements] в конце концов сработало