【发布时间】:2019-05-04 18:20:42
【问题描述】:
我正在尝试使用 selenium 和 python 从this 站点获取纬度和经度。我也在使用win32lipboard。但是每当我运行我的代码时,它都会随机抛出这个错误pywintypes.error: (5, 'OpenClipboard', 'Access is denied.')。
这是我的代码:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
import csv
import win32clipboard
csvreader = csv.reader(open("master_data.csv", 'r'))
csvwriter = csv.writer(open('final_master_data.csv', 'w', newline=''))
headers = next(csvreader)
headers.append("latitude")
headers.append("longitude")
csvwriter.writerow(headers)
locations = list(csvreader)
chromedriver = 'C:\\Users\\UserName\\Downloads\\chromedriver.exe'
driver = webdriver.Chrome(chromedriver)
driver.get('http://www.whatsmygps.com')
for places in locations:
place = places[6] + ", " + places[4] + ", " + places[2]
location = driver.find_element_by_id("address")
location.send_keys(Keys.CONTROL, 'a')
location.send_keys(place)
location.submit()
time.sleep(3)
lat_input = driver.find_element_by_id("latitude")
lat_input.send_keys(Keys.CONTROL, 'a')
lat_input.send_keys(Keys.CONTROL, 'c')
win32clipboard.OpenClipboard()
lat = win32clipboard.GetClipboardData()
places.append(lat)
win32clipboard.CloseClipboard()
lon_input = driver.find_element_by_id("longitude")
lon_input.send_keys(Keys.CONTROL, 'a')
lon_input.send_keys(Keys.CONTROL, 'c')
win32clipboard.OpenClipboard()
lon = win32clipboard.GetClipboardData()
win32clipboard.CloseClipboard()
places.append(lon)
print(places)
csvwriter.writerow(places)
driver.close()
所以,每当我运行此代码时,它都会毫无问题地启动,它会读取 csv 文件并将位置名称输入此站点,然后开始从该站点复制纬度和经度并将其插入另一个 csv 文件。但一段时间后,它会随机抛出错误pywintypes.error: (5, 'OpenClipboard', 'Access is denied.')。从昨天开始我就找不到解决方案了。
更新:我正在使用 Anaconda,并且以管理员身份运行 anaconda shell,所以访问权限没有问题。
【问题讨论】:
-
我不记得了,但
driver.find_element_by_id("address").text不应该包含你想要的字符串吗? -
@BarmakShemirani 我使用
driver.find_element_by_id("address")来通过id 获取元素,如果我们使用.text属性,那么我们会得到文本。但是这个字段是输入字段,在这个字段中使用 selenium 我输入位置地址。这没有问题,当我复制并粘贴纬度和经度时,我遇到了问题。您可以通过访问网站本身来检查它。 -
好吧,我弄糊涂了。看看您是否可以直接阅读
driver.find_element_by_id("latitude").text和longitude的相同内容 -
我也试过了。但在这种情况下,它不会给你任何东西。如果您亲自检查,这将是很大的帮助。我在上面的脚本中给出了该网站的链接。
标签: python-3.x anaconda selenium-chromedriver pywin32