python使用selenium爬取dell官网驱动(一):获取遍历各驱动的下载网址
2020-01-15 11:05
561 查看
python使用selenium爬取戴尔官网驱动:获取遍历各驱动的下载网址然后wget命令试验下载
我们选择戴尔官网产品的一服务器某型号进行爬虫测试
进入开发这模式看到驱动下载链接都藏在table表格中,因为我们需要遍历当前页面所有驱动下载链接,所以首先搞清楚当前页面共有多少驱动需要爬取。
如何获取他的个数呢?
我尝试了几种方式失败了,最后决定根据戴尔页面的特点,“因地制宜”他的产品都放在表格中,因此我们可以通过获取此页面的table共有多少行tr就可以得到接近正确值,由于将导航栏的标题算进去,所以得到的行数需要减去一,就能得到正确的数目。
通过下面的代码,可以获取到当前页面Table中共有多少行,试验所爬取的网址:戴尔试验爬取驱动网址
# 定位到table,并获得table中所有得tr元素 table = driver.find_element_by_xpath("/html/body/div[1]/div/div[5]/div[2]/div[7]/div/div[2]/div/section[1]/div/div" "[6]/div[1]/table") rows = table.find_elements_by_tag_name('tr') # python 得len()函数返回行数 numbers = len(rows)-1 #我们需要的是包含产品的行数,所以将导航栏一行减去。 print(numbers)
然后我们就可以尝试爬取页面内驱动的下载网址:
from selenium import webdriver import time driver =webdriver.Chrome() # driver.maximize_window() driver.get('https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/product/poweredge-r420/drivers') button = driver.find_elements_by_xpath('//*[@id="paginationRow"]') driver.execute_script("$(arguments[0]).click()", button) time.sleep(10) table = driver.find_element_by_xpath("/html/body/div[1]/div/div[5]/div[2]/div[7]/div/div[2]/div/section[1]/div/div" "[6]/div[1]/table") rows = table.find_elements_by_tag_name('tr') numbers = len(rows)-1 print(numbers) i = 0 while(i < numbers): for link in driver.find_elements_by_xpath('/html/body/div[1]/div/div[5]/div[2]/div[7]/div/div[2]/div/section[1]/div/' 'div[6]/div[1]/table/tbody/tr['+str(i+1)+']/td[5]/a[1]'): print(link.get_attribute("href")) i += 1 print "complete!" driver.close()
可以看出,页面内全部驱动下载地址都已成功爬取下来,接下载是要下载,在爬取到网址后加一简单的wget命令即可进行下载。
from selenium import webdriver import time import wget driver =webdriver.Chrome() # driver.maximize_window() driver.get('https://www.dell.com/support/home/cn/zh/cnbsd1/product-support/product/poweredge-r420/drivers') button = driver.find_elements_by_xpath('//*[@id="paginationRow"]') driver.execute_script("$(arguments[0]).click()", button) time.sleep(10) table = driver.find_element_by_xpath("/html/body/div[1]/div/div[5]/div[2]/div[7]/div/div[2]/div/section[1]/div/div" "[6]/div[1]/table") rows = table.find_elements_by_tag_name('tr') numbers = len(rows)-1 print(numbers) i = 0 while(i < numbers): for link in driver.find_elements_by_xpath('/html/body/div[1]/div/div[5]/div[2]/div[7]/div/div[2]/div/section[1]/div/' 'div[6]/div[1]/table/tbody/tr['+str(i+1)+']/td[5]/a[1]'): print(link.get_attribute("href")) wget.download(link.get_attribute("href")) i += 1 print "complete!" driver.close()
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- selenium+python 遍历select下拉框获取value值
- 使用Python和OpenCV通过网址URL获取图片
- selenium的Python使用(一)浏览器驱动的安装及使用
- 【用Python写爬虫】获取html的方法【四】:使用urllib下载文件
- Python使用selenium + headless chrome获取网页内容的方法示例
- python(selenium)使用chrome驱动问题小记
- 讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),搞得文件名好长,可以使用下面的Python代码
- Python selenium包的下载与使用
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
- selenium浏览器驱动下载安装及使用
- python+selenium调用chrome打开网址获取内容
- python 爬虫爬取下载网易云音乐歌单的歌曲(需要使用JS的加密方法得出params去获取下载地址)
- [Python爬虫] Selenium+Phantomjs动态获取CSDN下载资源信息和评论
- python使用selenium获取元素出现错误:"errorMessage":"Compoud class names not permitted"
- python中如何使用requests模块下载文件并获取进度提示?
- python爬虫 使用selenium+phontomjs 模拟点击输入 获取东航加载后的源码 机票价格
- 在python使用selenium获取动态网页信息并用BeautifulSoup进行解析--动态网页爬虫
- Python 使用Selenium获取斗鱼直播主播数据(二十二02)
- 使用Python从tensorflow官网下载中文手册Tutorial
- 【python+selenium】pycharm 的下载安装和基本使用