python编程之selenium+chromedriver批量获取资源资源链接

selenium下载

我们需要用到selenium作为自动化工具,这里建议使用pycharm作为我们的开发工具,在File->Settings->Project Interpreter中添加selenium package,这样就可以在项目中import selenium了。
如果不使用pycharm,在命令行中输入

pip install selenium

也可以进行安装

chromedriver下载

网上给出了两种方式下载chromedriver:
从淘宝的镜像下载:这里
从官网下载:这里
关于下载哪种版本,我们可以在谷歌浏览器中的设置->关于chrome中找到我们自己浏览器的版本,下载对应的即可

我强烈建议使用第二种方式下载,淘宝的镜像chromedriver版本对应有问题,比如我下载的是84版本的,但是实际使用却发现是74版本的,很坑。。。

代码编写

关于selenium的方法可以参见此篇文章:这里

我使用代码的场景是某评书网的MP3下载。在这个网址中,同一评书的不同回目的html是有一定规律的,可以使用字符串拼接的方式访问。在某一回的html上有一个按钮,点击后可以进入在线试听页面(新页面,独立于上个页面),在这个页面中可以通过操作进行下载。

我在实验中发现,试听页面为了防止爬虫进行了url随机化,每个url都是独立的,不能进行自动化访问,而且下载的话也需要进行右键点击才能进行音频另存为,而这超出了selenium的控制范围,但是将此页面的url批量导入迅雷就可以进行自动下载。所以我决定这样操作:

使用字符串拼接的方式自动访问回目页面,在每个页面上点击相应的按钮进入试听页面,获取试听页面的url,存入文件中,退出试听页面,并重复这一过程。

代码如下:

from selenium import webdriver
import time

def main():
    chrome_driver = 'G:\chromedriver.exe'  #chromedriver的文件位置
    driver = webdriver.Chrome(executable_path = chrome_driver) #生成driver对象
    suburl = 'https://www.***.com/down/'
    urls = []
    '''
    自动获取url并存入列表
    '''
    for i in range(158109,158320):
        url = suburl + str(i) + '.html'  #进行字符串拼接
        driver.get(url)
        time.sleep(1)
        driver.find_element_by_id("clickina").click()  #页面上的元素点击事件
        time.sleep(1)
        driver.switch_to.window(driver.window_handles[-1])  #将driver定位到当前页面
        downurl = driver.current_url  #获取url
        urls.append(downurl)
        driver.close()   #关闭试听页面
        driver.switch_to.window(driver.window_handles[-1])  #driver重新定位页面
        time.sleep(1)
    
    '''
    写入文件
    '''
    filename = 'G:\down.txt'
    with open(filename,'w') as file:
        for url in urls:
            file.write(url)
            file.write('\n')


if __name__ == '__main__':
    main()

将文件中的字符串复制到迅雷就可以了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值