我正在使用Python 3,selenium和chrome驱动程序将内容从一个论坛平台移动到另一个论坛平台。我已经能够使用 driver.find_element_by 方法成功找到论坛帖子标题、海报名称、发布日期和帖子内容,并将其内容移动到另一个平台。
find_poster_names = driver.find_elements_by_class_name('PostName')
find_posts = driver.find_elements_by_css_selector('.entry-content.PostDetails')
dates = driver.find_elements_by_css_selector('.published.formatDate.formatDateTitle')
我的第一个问题:每个论坛帖子都可以有任意数量的回复。 当我为一个具有一个论坛帖子和 n 个回复的网页运行上述代码时,我会得到多个元素列表,并且可以按列表中的位置适当匹配元素(名称、日期、内容),因为每个帖子/回复都有这些项目。 然而,并非所有帖子/回复都有与之关联的文件或图像。因此,当我运行下面的代码时,我找到了图像/文件元素,但不知道如何将它们与正确的帖子/回复相匹配。 我搜索了这个网站,只找到以在页面上查找图像/文件为中心的问题,而不是它们相对于其他内容的位置。
images = driver.find_elements_by_tag_name('img')
files = driver.find_elements_by_css_selector('.dfLink.LTR')
我的第二个问题:我可以使用代码查找论坛帖子内容,并使用发送密钥在新平台中键入文本。但是,有没有办法将文本移动到剪贴板?我想使用 Control + V(粘贴功能)来加快运行时间。当我搜索时,我找到有关如何在硒中使用剪贴板的帖子,但当我使用此方法找到文本时,找不到如何将内容放入剪贴板的帖子。
find_posts = driver.find_elements_by_css_selector('.entry-content.PostDetails')
post_text = find_posts[n].text
create_post = 2nd_driver.find_element_by_xpath('//*[@id="threadsInGroup"]')
create_post.send_keys(post_text)
我发现您可以使用 .location 方法来查找 Web 元素相对于其他 Web 元素的位置。下面你可以看到我是如何使用它的。
for img in img_web_element_list:
for post in find_reply_posts_web_elements:
if img.location['y'] < post.location['y']:
img_post_loc.append(find_reply_posts_web_elements.index(post) - 1)
break