将网页的一部分另存为HTML

时间:2019-06-15 01:59:51

标签: javascript python selenium-webdriver selenium-ide

我正在尝试保存网页的一部分并将其另存为html文件。

我可以这样手动进行:

当我在Chrome或Mozilla中使用F12(开发人员工具)并使用选择器选择所需网站的位置时,会看到div,并复制Xpath。然后,我复制该元素的HTML并粘贴到记事本编辑器中,并将其另存为HTML。

我在Selenium IDE之前就使用过,但是找不到找到该div Xpath内容的方法。

有没有办法结合使用Selenium IDE和JavaScript或Python?

也许有人可以建议我如何实现这一目标。

谢谢

2 个答案:

答案 0 :(得分:2)

您是说硒 IDE 还是硒+ Python?我的答案是针对Selenium IDE(不需要python)。

store Text命令可满足您的需求:

Selenium IDE软件测试工具中的storeText命令对于将页面元素的文本值存储到变量中以供将来使用很有用。因此,它是从HTML文本和表格中进行网络抓取信息的推荐命令。

请注意,对于输入框,请选择框,复选框,单选按钮或文本区域,因为您看到的文本在技术上是字段值。因此,storeText在设计上不适用于这些元素,它将返回“”。而是使用store Value从输入元素中提取文本。

通常,请参见web scraping with Selenium IDE了解所有可能的选项。

保存到文件:

在常规的硒中无法做到这一点,但是ui.vision selenium ide ++具有附加的命令可以做到这一点:

csvSave-用于创建包含数据的CSV文件,但是当然,您也可以将其与单个值一起使用:

  • storeText | xpath=... | var1(将值提取到var1)
  • store | ${var1} | !csvLine(将var1值添加到CSV文件中)
  • csvSave | filename(将当前CSV行写入磁盘)

如果要save the complete web page,另一种选择是将模拟CTRL + S与XType | ${KEY_CTRL+KEY_S}一起使用

答案 1 :(得分:-1)

这只是硒的例子,而不是您的特定答案。

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
import time
import random


from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys




seed = 1
random.seed(seed)

driver = webdriver.Chrome()
driver.get("https://www.myntra.com/")

element = driver.find_element_by_xpath("//*[@id='desktop-header-cnt']/div[2]/div[3]/input")

# Put the word "history" in the search box and hit enter
element.send_keys("pantaloons")
element.send_keys(Keys.RETURN)

time.sleep(3)
for i in range(1000):
    time.sleep(1)
    for i in range(120):
        actions = ActionChains(driver)
        actions.send_keys(Keys.ARROW_DOWN)
        actions.perform()
        time.sleep(0.10)

    element=driver.find_element_by_xpath(" //*[@id='desktopSearchResults']/div[2]/section/div[2]/ul/li[12]/a")
    element.click()
    time.sleep(1)




#
#
# # Get a list of elements (videos) that get returned by the search
# search_results = driver.find_elements_by_id("video-title")
#
# # Click randomly on one of the first five results
# search_results[random.randint(0,10)].click()
#
# # Go to the end of the page (I don't know if this is necessary
#
# #
# time.sleep(4)
#
# # Get the recommended videos the same way as above. This is where the problem starts, because recommended_videos essentially becomes the same thing as the previous page's search_results, even though the browser is in a new page now.
# while True:
#     recommended_videos = driver.find_elements_by_xpath("//*[@id='dismissable']/div/a")
#     print(recommended_videos)
#     recommended_videos[random.randint(1,4)].click()
#     time.sleep(4)

您可以尝试转储页面源并对其进行解析,或者仅转储元素源。

页面源到pageSource变量(Java):

String pageSource = driver.getPageSource(); 元素源到elementSource变量(Java):

WebElement元素= driver.findElement(By.id(“ id”)); 字符串elementSource = element.getAttribute(“ innerHTML”);