Как изменить и расширить список в python

#python #list #selenium

Вопрос:

Я создаю веб-страницы для поисковых запросов. Я хочу найти предлагаемые термины и для каждого предлагаемого термина получить новый список дополнительных предлагаемых терминов (которые я хотел бы добавить к исходному списку). Ниже приведен мой код до сих пор

 url = ' starting url  '
driver.get(url)

def search(url):
    new_urls = []
    searches = []
    new_searches = []

     
    try:
        #Get suggested terms
        suggestions = driver.find_element_by_xpath('//*[@id="search-associates"]').find_elements_by_tag_name('a')
        for i in suggestions:
            #add each term to the list searches
            searches =[i.text]

            #Get urls of suggested terms to visit
            new_urls  = [i.get_attribute('href')]
        
    except:
        pass
   

    #Filter for duplicate suggested terms and blanks
    new_searches  = [x for x in new_searches if x != None and x not in searches ]
    
    print(new_searches)
    print(searches)
    
    #Visit the first url in the list (just for testing purposes)
    driver.get(new_urls[0])
    
    #call function to get info from new_url
    search(new_urls[0])   
 
       
 #Initial function call
 search(url)
 

У меня есть следующие проблемы:

  1. Список поиска обновляется каждый раз, когда функция вызывается снова. Новые предлагаемые термины не добавляются к первоначальному списку.
  2. Мой код для фильтрации дубликатов и пробелов не работает

Кто-нибудь знает, как устранить эти проблемы? Если это так, я очень признателен вам за помощь.

Спасибо всем, кто нашел время прочитать мою проблему и помочь мне.

Спасибо.

Отредактируйте, если кому-то нужен пример вывода того, что я ищу, скажем, я посещаю URL-адрес, и первый набор предлагаемых терминов таков:

 searches = ['apples', 'bananas', 'cherries', 'grapes', 'oranges']
 

Допустим, я посещаю URL apple -адрес и получаю следующие предлагаемые условия:

 searches = [ 'bananas', 'cherries', 'tangerines', 'grapefruit']
 

Я хочу, чтобы список поиска был обновлен до:

 searches = ['apples', 'bananas', 'cherries', 'grapes', 'oranges','bananas', 'cherries', 'tangerines', 'grapefruit']
 

Я хочу, чтобы new_searches обновлялись, чтобы быть

 new_searches = ['apples', 'bananas', 'cherries', 'grapes', 'oranges','tangerines', 'grapefruit']
 

Как вы можете видеть, дубликаты удалены.

Проблема, с которой я сталкиваюсь, заключается в том, что new_searches searches список вообще не фильтруется, он выводится [] . Другая проблема, с которой я сталкиваюсь, searches заключается в том, что я не добавляю новые термины в предыдущий список. Вместо этого он создает новый список.

Ответ №1:

ваш i.text не работает, поэтому он всегда напрямую просто проходит. Вы можете добавлять элементы в списки с помощью:

 searches.append(i)
 

или без .текста. Если вы хотите добавлять только строки, которые вы можете использовать str(i) .

Ответ №2:

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

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

1. Спасибо, что нашли время ответить. Причина, по которой я хочу удалить дубликаты, заключается в том, что я не хочу посещать повторяющиеся условия поиска, как только получу соответствующий URL