需要将以下selenium代码的输出放到Json文件

时间:2017-11-14 10:31:22

标签: json python-2.7 selenium-chromedriver

需要解析输出数据并将其转储到json文件中。任何帮助将不胜感激。

executable_path = "/usr/local/share/chromedriver"
chrome_options = Options()
os.environ["webdriver.chrome.driver"] = executable_path
driver = webdriver.Chrome(executable_path=executable_path, 
chrome_options=chrome_options)
driver.get("http://environment.netronline.com/api/viewers//env-
app.php?addr=gilbert")
time.sleep(5)
listOfElements = driver.find_elements_by_xpath("//div[@id='pinBox']//div[@class='pin']")
for element in listOfElements:
    hover = ActionChains(driver).move_to_element(element)
    hover.perform()
    time.sleep(5)
    targetTooltip = driver.find_elements_by_xpath("//*[@id='tooltip']")
    print targetTooltip.text
    print "**********************"

输出是: 紧急响应通知系统(ERNS) 左键单击引脚以获取更多信息。

事件:CALLER声称西方绑定的货运列车在轨道上有一名乘客。 事件发生日期:2012年7月3日6:20 事件地点:议员:926.96 年度报告:2012年 城市:GILBERT 州:AZ 县:MARICOPA

美国RCRA发电机(CESQG,SQG,LQG) 左键单击引脚以获取更多信息。

信息网址:http://ofmpub.epa.gov/enviro/fii_query_detail.disp_program_facility?p_registry_id=110045500757 EPA标识符:110045500757 主要名称:CVS PHARMACY#3268 地址:765 S LINDSAY RD 城市:GILBERT 县:MARICOPA 州:AZ 邮编:85296-3063 节目:AZURITE,BR,RCRAINFO 项目兴趣:危险废物双年度报告员,LQG,国家大师 更新时间:2015年1月27日13:51:45 录制于:10-MAY-2012 16:46:54

必需的json格式为: [       {          “来源”:“紧急响应通知系统(ERNS)”,      “事件”:“CALLER表示,这是一个西部绑定的货运列车,在轨道上有一个穿行者。”,          “事件发生日期”:“2012年7月3日6:20”,          “事件地点”:“议员:926.96”,          “年度报告”:“2012”,          “城市”:“吉尔伯特”,          “国”: “AZ”,          “县志”: “MARICOPA”       } ]

2 个答案:

答案 0 :(得分:1)

我在python 3.5中运行了代码,因此将urllib2更改为urllib3。 接下来的更改是在方法webdriver.chrome()中传递chrome驱动程序路径。 您可以从“https://sites.google.com/a/chromium.org/chromedriver/”下载chrome diver。

from selenium import webdriver
import os
import urllib3
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select
import time

driver = webdriver.Chrome('C:\\Users\\raj.damani\\Downloads\\chromedriver.exe')
driver.get("http://environment.netronline.com/api/viewers//env-app.php?addr=gilbert#")
time.sleep(8)
listOfElements = driver.find_elements_by_xpath('//div[@id="pinBox"]//div[@class="pin"]')
for element in listOfElements:
    hover = ActionChains(driver).move_to_element(element)
    hover.perform()
    time.sleep(5)
    targetTooltip = driver.find_element_by_xpath('//*[@id="tooltip"]')
    print(targetTooltip.text)
    print("**********************")

答案 1 :(得分:0)

我找到了逻辑

driver.get("http://environment.netronline.com/api/viewers//env-app.php?addr=gilbert")
time.sleep(5)
listOfElements = driver.find_elements_by_xpath("//div[@id='pinBox']//div[@class='pin']")
for element in listOfElements:
    hover = ActionChains(driver).move_to_element(element)
    hover.perform()
    time.sleep(5)
    targetTooltip = driver.find_elements_by_xpath("//*[@id='tooltip']")
    for li in targetTooltip:
        lines = str(li.text)
        lines = str(lines).split('\n')
        lines.remove('Left click the pin for more info.')
        lines.remove('')
        lines.insert(0,'Environmental Concern')
        lines = [i.split(':', 1) for i in lines]
        flat_list = flatten(lines)
    r = dict(zip(flat_list[::2], flat_list[1::2]))
print json.dumps(r)