使用Selenium Web刮板将文本输出到单个列表中进行循环打印

时间:2018-11-26 20:06:28

标签: python-3.x list loops selenium for-loop

我正在运行以下程序,该程序会抓取该网站。该程序使用一个列表,该列表填充网站上的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 个答案:

答案 0 :(得分:2)

您可以尝试以下操作:

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)
   ...

希望对您有帮助!