使用python selenium打印刮取的数据
下面是我想出的打印临时数据的方法:使用python selenium打印刮取的数据,python,selenium,selenium-webdriver,selenium-chromedriver,Python,Selenium,Selenium Webdriver,Selenium Chromedriver,下面是我想出的打印临时数据的方法: pool_to_search_for_loads = driver.find_element(By.XPATH, '//*[@id="searchResults"]/div[5]/div') loads_contact = pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'contact') loads_origin = pool_to_search_for_loads.find
pool_to_search_for_loads = driver.find_element(By.XPATH, '//*[@id="searchResults"]/div[5]/div')
loads_contact = pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'contact')
loads_origin = pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'origin')
loads_dest = pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'dest')
def parse_printer(info1, info2, info3):
count = 0
while count < len(info1):
print(info1[count].text, ' from ', info2[count].text, ' to ', info3[count].text)
count += 1
parse_printer(loads_contact, loads_origin, loads_dest)
为这样的函数编写函数似乎有些过分,是否有更优雅的方法来打印结果?这取决于是否需要保留loads\u contact、loads\u origin和loads\u dest变量以供其他用途。您可以使用列表理解来提取文本
loads_contact = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'contact')]
loads_origin = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'origin')]
loads_dest = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'dest')]
然后,您可以将这3个项目压缩到1个列表中,然后使用该1个列表中的项目(与f字符串组合)
这是一个聪明的方法!谢谢你的回答!我只是在我的代码上试了一下,它成功了,然后我试着把你的方式扩展到其余的数据上(同样的“加载”\u某物),出于某种神奇的原因,代码运行平稳,没有错误,但没有打印出数据哈哈,顺便说一下,你的方式确实更优雅,但更耗时
loads_contact = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'contact')]
loads_origin = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'origin')]
loads_dest = [x.text for x in pool_to_search_for_loads.find_elements(By.CLASS_NAME, 'dest')]
for item in zip(loads_contact, loads_origin, loads_dest):
print(f"{item[0]} from {item[1]} to {item[2]}")