代码之家  ›  专栏  ›  技术社区  ›  Bisbot

使用Selenium Web scraper将文本输出打印到单个列表中以便循环

  •  0
  • Bisbot  · 技术社区  · 6 年前

    我正在运行下面的程序来抓取这个网站。该程序使用一个列表来填充网站上的3个搜索字段,然后打印所选页面的文本。它一次又一次地这样做直到 list_2.txt 结束了。

    代码如下:

    list_2 = [['7711564', '14', '93'], ['0511442', '7', '27']]
    
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from time import sleep
    
    
    driver = webdriver.Firefox()
    driver.get("https://www.airdrie.ca/index.cfm?serviceID=284")
    
    for query in list_2:
    
       driver.find_element_by_name("whichPlan").send_keys(query[0])
       driver.find_element_by_name("whichBlock").send_keys(query[1])
       driver.find_element_by_name("whichLot").send_keys(query[2])
    
       driver.find_element_by_name("legalSubmit").click()
       sleep(3)
    
       text_element = driver.find_elements_by_xpath("//div[@class='datagrid']")
       text_element2 =
       driver.find_elements_by_xpath("//table[@class='quickkey_tbl ']")
    
       txt = [x.text for x in text_element]
       print(txt, '\n')
       txt2 = [x.text for x in text_element2]
       print(txt2, '\n')
    
       driver.back()
       driver.refresh()
       sleep(2)
    

    我想能打印 所有 将每个循环/迭代的结果放入单个列表中。我尝试使用+=但最终只为列表中的第一个项目打印了两个输出。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Ratmir Asanov    6 年前

    您可以尝试如下操作:

    results_list = []
    
    for query in list_2:
       ...
    
       txt = [x.text for x in text_element]
       print(txt, '\n')
       txt2 = [x.text for x in text_element2]
       print(txt2, '\n')
       results_list.append(txt + txt2)
       ...
    

    希望它能帮助你!