#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)
У меня есть следующие проблемы:
- Список поиска обновляется каждый раз, когда функция вызывается снова. Новые предлагаемые термины не добавляются к первоначальному списку.
- Мой код для фильтрации дубликатов и пробелов не работает
Кто-нибудь знает, как устранить эти проблемы? Если это так, я очень признателен вам за помощь.
Спасибо всем, кто нашел время прочитать мою проблему и помочь мне.
Спасибо.
Отредактируйте, если кому-то нужен пример вывода того, что я ищу, скажем, я посещаю 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