如何使用SeleniumWebDriver(python)选择、复制和粘贴元素中的所有内容
这就是我想做的。我有2个网站,网站A包含我需要转移到网站B的数据。本质上 我正在将数据从网站A迁移到网站B,因为网站A正在关闭 很快 我需要移动的不仅仅是文本,它可以是文本、图像或超链接文本,还有一些格式的东西我需要保留。我认为最简单的方法是复制和过去,而不是将所有这些数据以一种允许我将其插入网站B的方式存储,就像复制和粘贴一样。在我制定代码解决方案之前,他们只是简单地复制和粘贴从a到B的所有内容。现在我已经在代码中实现了所有内容(获取链接和其他所需内容),但我无法移动数据。所以基本上,在我尝试复制和粘贴数据之前,我正在做的就是这样。我正在使用Python3如何使用SeleniumWebDriver(python)选择、复制和粘贴元素中的所有内容,python,html,python-3.x,selenium,copy-paste,Python,Html,Python 3.x,Selenium,Copy Paste,这就是我想做的。我有2个网站,网站A包含我需要转移到网站B的数据。本质上 我正在将数据从网站A迁移到网站B,因为网站A正在关闭 很快 我需要移动的不仅仅是文本,它可以是文本、图像或超链接文本,还有一些格式的东西我需要保留。我认为最简单的方法是复制和过去,而不是将所有这些数据以一种允许我将其插入网站B的方式存储,就像复制和粘贴一样。在我制定代码解决方案之前,他们只是简单地复制和粘贴从a到B的所有内容。现在我已经在代码中实现了所有内容(获取链接和其他所需内容),但我无法移动数据。所以基本上,在我尝试
original_window = driver.current_window_handle
driver.execute_script("window.open()")
wait.until(EC.number_of_windows_to_be(2))
driver.switch_to.window(driver.window_handles[1])
actURL = a.getlink()
driver.get(actURL)
e = a.getactivitydata(driver)
driver.close()
driver.switch_to.window(driver.window_handles[0])
这里A是一个自定义对象,具有方法get link,该方法返回指向我需要从中获取数据的网站A的链接。A还包含getactivitydata方法,我希望在该方法中选择、复制和返回驱动程序。方法代码是
def getactivitydata(self, driver):
r = driver.page_source
soup = BeautifulSoup(r, 'html.parser') # Raw html obj
ty = self.typef
if ty == 'page':
elem = driver.find_element_by_id("page-content")
end = driver.find_element_by_class_name('course-nav')
a = ActionChains(driver)
#elem.send_keys("bar")
a.move_to_element(elem)
a.click_and_hold().perform()
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
a.move_to_element(end)
a.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
#elem.send_keys(Keys.CONTROL, 'a') # Select all
#elem.send_keys(Keys.CONTROL, 'c') # Copy
return(elem)
elif ty == 'quiz':
pass
elif ty == 'assign':
pass
elif ty == 'folder':
pass
elif ty == 'glossary':
pass
elif ty == 'resource':
pass
elif ty == 'forum':
pass
ty表示页面的类型,因为每个页面需要稍微不同的处理方式。我想要做的是基本上选择HTML中元素id为“page content”的所有文本和图像。当运行代码时(有很多其他代码可以运行),我得到以下异常
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable
在我试图实际复制所需数据的行中出现此异常
而实际包含文本的元素是,因此只需更新任何试图执行相同操作的人即可。单击拖动不起作用,所起的作用是
a = ActionChains(driver)
#elem.send_keys("bar")
elem = driver.find_element(By.ID, "maincontent")
#wait = WebDriverWait(driver, 10)
#first = wait.until(EC.element_to_be_clickable(elem))
a.move_to_element_with_offset(elem, 0, 0)
a.key_down(Keys.SHIFT)
a.double_click(elem).double_click(elem)
end = driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[3]')
a.move_to_element(end).double_click(end)
a.key_up(Keys.SHIFT)
a.key_down(Keys.CONTROL).send_keys('c').key_up(Keys.CONTROL).perform()
基本上,我在这里做的是在元素开始时按住shift键和四键单击(我认为3在技术上可以做到),在另一个总是在它下面的元素上,我尝试实现和偏移,但无法让它工作使用
wget
实用程序可以拉出网站的完整镜像,跟踪所有链接并重建目录树。“那会比刮削更有效。”TimRoberts,“wget的实现是如何工作的?”?从谷歌上看,它看起来像是检索内容,所以我会检索特定元素的内容还是整个页面的内容?如果是整个页面,人们如何解析这些数据?好吧,我为没有阅读所有内容而感到羞耻。我看了邮件的开头,断定你想复制另一个网站。