首页 > 解决方案 > 如何在python中修改和扩展列表

问题描述

我正在搜索搜索词。我想找到建议的术语,并为每个建议的术语获取一个新的附加建议术语列表(我想将其附加到原始列表中)。以下是我到目前为止的代码

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']

假设我访问 urlapple并获得以下建议的术语:

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是没有将新术语附加到上一个列表中。它会创建一个新列表。

标签: pythonlistselenium

解决方案


你的i.text不起作用,所以它总是直接通过。您可以将项目添加到列表中:

searches.append(i)

或没有.text。如果您只想附加字符串,您可以使用str(i).


推荐阅读