【问题标题】:Getting href using xpath without opening Browser在不打开浏览器的情况下使用 xpath 获取 href
【发布时间】:2018-08-04 22:47:12
【问题描述】:

我有一个要求,我必须从不同的网页下载大约 900 个文档。

我有网页的 url 和要下载的每个文档的 xpath。

目前我正在做的是从数据库中读取 url 和 xpath,打开浏览器 (Chrome) 并使用 xpath 找到链接,然后下载文档。

问题是chrome必须打开大约100次才能下载所有文档,这会导致性能问题。

那么有什么方法可以在不打开浏览器和使用 xpath 的情况下下载文档(如果我可以在不打开浏览器的情况下使用 Xpath 获取 href,然后使用 Apache http 客户端下载文档)?

注意 - 我正在使用 Selenium,我不想直接使用 href 来下载文档

【问题讨论】:

  • 你面对的是什么performance issue?你能分享你的代码试验吗?
  • 如果您存储了所有的href链接,使用wget会不会更好?还是下载链接是动态的?
  • 某些网站的下载链接可能是动态的,这就是使用 xpath 的原因
  • @DebanjanB - Chrome 被打开了很多次,这会消耗很多时间,我想消除它
  • @bharatbhushan ,为什么您需要为每个页面打开新的 Chrome 会话,而不是在 for 循环中使用 get(URL)

标签: java selenium xpath href selenium-chromedriver


【解决方案1】:

可以查看phantomJS;

首先从http://phantomjs.org/download.html下载合适的版本并粘贴到与code.py相同的文件夹中

这是我在https://www.tripadvisor.com.tr/的分页代码中的一个示例

from selenium import webdriver
url = "https://www.tripadvisor.com.tr/Restaurants-g293974-Istanbul.html"
executable_path1 = './phantomjs'
mekan_linkler = []
div_mekanlar1 = driver.find_elements_by_xpath("//*[@href]")
for i in div_mekanlar1:
     x = i.get_attribute('href')
     y = 'http'+x[5:]
     mekan_linkler.append(y)
nextpage = driver.find_element_by_xpath("//*[@id='EATERY_LIST_CONTENTS']/div[3]/div//a[contains(.,'Sonraki')]")
nextpage.click()

欲了解更多信息,请查看http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.phantomjs.webdriver

【讨论】:

    猜你喜欢
    • 2016-01-10
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 2019-06-11
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多