前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >selenium实战-抓取百度网盘分享链接

selenium实战-抓取百度网盘分享链接

作者头像
沈宥
发布于 2022-05-09 13:40:02
发布于 2022-05-09 13:40:02
1K00
代码可运行
举报
运行总次数:0
代码可运行

1、建立一个函数,用来创建浏览器驱动

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def createDriver():
    """
    每次关闭Chromedriver后,重新创建一个
    :return:
    """
    # 创建driver,并指定Chromedriver的路径
    current_dir = os.path.abspath('.')
    chromedriverPath = os.path.join(current_dir, 'chromedriver')
    browser = webdriver.Chrome(executable_path=chromedriverPath)

    return browser

2、启动浏览器,在主函数中完成所有功能的调用

(1)搜索链接+关键字拼接成URL

(2)切换到"百度知道"结果列表页

(3)在搜索结果中遍历,列表页进入详情页,如果结果详情页中存在百度网盘分享链接,考察分享链接是否已经失效

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def getInfo(file_name, keyword):
    key_wd = {'wd': keyword}
    # URL encode
    target_url = Format_str + urllib.parse.urlencode(key_wd)

    # 启动浏览器
    browser = createDriver()
    browser.get(target_url)
    sleep(2)

    #切换到百度知道tab
    #//*[@id="s_tab"]/div/a[4]
    browser.find_element_by_xpath('//*[@id="s_tab"]/div/a[4]').click()
    sleep(2)

    # 搜索结果链接,第一个基本上就是百度知道的结果,所有只取第一页10条,如果搜不到直接放弃空字符
    for index in range(1, 11):
        # 获取详情页xpath
        prefix_xpath = '//*[@id="wgt-list"]/dl[' + str(index) + ']'

        # 判断该条搜索结果是否为百度知道
        isBaiduKown(file_name=file_name, browser=browser, prefix=prefix_xpath)

    # 关闭浏览器
    browser.quit()

3、在结果详情页中搜索结果

(1)确认回答总条数,以及页数

(2)当前页只展示2条回答结果,需要判断是否打开折叠/展开按钮

(3)最佳答案和普通答案的class_name不同,需要单独做处理

(4)答案的Xpath中包含了用户的标识ID,所以使用class_name来定位元素

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def getResultDetail(file_name, browser):
    """
    :param browser: 浏览器
    :return: 文件百度网盘地址详情
    """
    # 回答总个数统计
    answer_number_text = browser.find_element_by_xpath('//*[@id="qb-content"]/div[2]/span[2]').get_attribute(
        'innerHTML')
    answer_number = answer_number_text.split('个')[0]

    # 当答案大于2个时,答案列表会折叠
    if int(answer_number) > 2:
        # 更多按钮
        more_button_xpath = '//*[@id="show-answer-hide"]'
        if isElementExist(by=By.XPATH,value=more_button_xpath,driver=browser) == True:
            # 若存在更多按钮,先按展开所有答案
            browser.find_element_by_xpath(more_button_xpath).click()

        # 更多折叠按钮
        more_hide_xpath = '//*[@id="wgt-answers"]/div/div[6]/div'
        if isElementExist(by=By.CLASS_NAME,value='pager-next',driver=browser) == True and int(answer_number) > 5:
            if browser.find_element_by_class_name('pager-next').is_displayed() == False:
                browser.find_element_by_xpath(more_hide_xpath).click()
        else:
            browser.find_element_by_xpath('//*[@id="wgt-answers"]/div/div[5]/div').click()

        # 每页5个答案
        page_num = int(answer_number) // 5 + 1
        for page_index in range(1, page_num):
            # 获取答案详情,并判断是否有网盘下载链接
            # 最佳答案
            if page_index == 1:
                best_answer = browser.find_element_by_class_name('best-text.mb-10').text
                if downloadLinkObserve(file_name=file_name, detail_text=best_answer, browser=browser) == True:
                    browser.quit()
                    break

            # 普通答案
            nomal_answers_elements = browser.find_elements_by_class_name('answer-text.mb-10.line')
            for nomal_element in nomal_answers_elements:
                answer_text = nomal_element.text
                if downloadLinkObserve(file_name=file_name, detail_text=answer_text, browser=browser) == True:
                    browser.quit()
                    break

            # 如果有下一页,在未获取到下载链接的情况下,跳转到下一页继续
            if page_index < page_num and int(answer_number) > 5:
                browser.find_element_by_class_name('pager-next').click()

    # 切换到上一页的列表
    switchWindow(browser=browser, windows_signal='current')

4、提取答案文本中的分享链接

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def findUrl(string):
    """
    提取符串中URL链接
    :param string:
    :return:
    """
    # findall() 查找匹配正则表达式的字符串
    import re

    url = "https:" + re.match(r"[^/]+(/[^ ]*)", string).group(1)
    return url

5、结果存储

(1)将分享下载链接和提取码(如果有)分离出来,以字典的形式存储

(2)封装数据库方法,直接调用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def downloadLinkObserve(file_name, detail_text, browser):
    """
    检查回答中是否有百度网盘下载链接,如果有,再检查该链接分享是否已经失效
    :param detail_text:
    :param browser:
    :return:
    """
    if 'pan.baidu.com/s' in detail_text:
        download_url = findUrl(detail_text)
        download_code = ''
        if ("提取码" in detail_text):
            download_code = detail_text.split("提取码")[1]
        if (requestIsValid(url=download_url, browser=browser)) == True:
            file_link = {'download': download_url, 'code': download_code}

            # 更新数据库数据
            data.dbDeal.update_result(fileLink=str(file_link), fileName=file_name)

            return True
    else:
        return False
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 从头开始学习测试开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]
  作者用过的前端框架不少,曾经还在一个项目中同时使用两套框架控件(年少无知、效率特慢),所以可供选择的前端框架有不少:
全栈程序员站长
2022/11/04
2.6K0
使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]
SSM 项目 ——— 小米商城后台管理系统
本项目主要目的是使学员更深层的了解IT企业的文化和岗位需求、模拟企业的工作场景,分享研制成果,增加学员对今后工作岗位及计算机应用开发对客观世界影响的感性认识,使学员对技术有更深入的理解,在今后工作中能有更明确的目标和方向。并能为日后职业规划提供很好的指导作用。
全栈程序员站长
2022/09/14
3.7K0
SSM 项目 ——— 小米商城后台管理系统
【学生毕业设计】基于web学生信息管理系统网站的设计与实现(13个页面)
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研
IT司马青衫
2022/08/11
1K0
【学生毕业设计】基于web学生信息管理系统网站的设计与实现(13个页面)
Minima黑色响应式后台管理模板
Minima黑色响应式后台管理模板基于Bootstrap3.3.4制作,黑色风格,兼容PC端和手机移动端,全套模板,包括登录、仪表盘、按钮、窗口部件、网格布局、图表等后台模板页面。 模板截图 代码截图 主要HTML index.html <!DOCTYPE html> <html> <head> <title>Minimal 1.0 - Dashboard</title> <meta name="viewport" content="width=device-width,
海拥
2021/08/23
2K0
Minima黑色响应式后台管理模板
基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师
IT司马青衫
2022/08/16
1.2K0
基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
基于jsp+servlet图书管理系统之后台用户信息插入操作
根据文章内容撰写摘要总结。
别先生
2017/12/29
5.3K0
基于jsp+servlet图书管理系统之后台用户信息插入操作
学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 💬历任研发工程
IT司马青衫
2022/08/24
2K0
学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计
基于web在线餐饮网站的设计与实现——仿Coco线上订奶茶饮料6个页面(HTML+CSS+JavaScript)
👨‍🎓静态网站的编写主要是用HTML DIV+CSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的前端Html5代码都是一致的,本网页适合修改成为各种类型的产品展示网页,比如美食、旅游、摄影、电影、音乐等等多种主题,希望对大家有所帮助。 🧡 【作者主页——🔥获取更多优质源码】 🧡 【web前端期末大作业——🔥🔥毕设项目精品实战案例(1000套)
IT司马青衫
2022/08/17
6290
基于web在线餐饮网站的设计与实现——仿Coco线上订奶茶饮料6个页面(HTML+CSS+JavaScript)
学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
1 网页简介:此作品为学生个人主页网页设计题材,学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
IT司马青衫
2022/08/24
1.8K0
学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
VFP+VUE碰撞出火花来了,我入门猫框后开始摸索开发自己的系统
大家好,我们前段时间跟着加菲猫老师学习了VFP+VUE入门课程。通过这门课程我们了解了VUE在网页开发的应用情况,也学会了利用axios组件从网页前端获取后台数据。
加菲猫的VFP
2022/01/05
7820
VFP+VUE碰撞出火花来了,我入门猫框后开始摸索开发自己的系统
SpringBoot-06 员工管理系统
当然,你也可以在之后添加数据的时候,每次在date对应位置写 new Date();
张小驰出没
2021/12/06
1.4K0
SpringBoot-06 员工管理系统
基于HTML电商购物项目的设计与实现——html+css+javascript+jquery+bootstarp响应式图书商城
常见网页设计作业题材有 个人、 美食、 公司、 学校、 旅游、 电商、 宠物、 电器、 茶叶、 家居、 酒店、 舞蹈、 动漫、 服装、 体育、 化妆品、 物流、 环保、 书籍、 婚纱、 游戏、 节日、 戒烟、 电影、 摄影、 文化、 家乡、 鲜花、 礼品、 汽车、 其他等网页设计题目, A+水平作业, 可满足大学生网页大作业网页设计需求都能满足你的需求。原始HTML+CSS+JS页面设计, web大学生网页设计作业源码,画面精明,排版整洁,内容丰富,主题鲜明,非常适合初学者学习使用。 --- <font
IT司马青衫
2022/08/16
1K0
基于HTML电商购物项目的设计与实现——html+css+javascript+jquery+bootstarp响应式图书商城
【计算机毕业设计】html学生管理系统 OA管理系统设计与实现 HTML网页设计结课作业
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发
IT司马青衫
2022/08/11
6770
【计算机毕业设计】html学生管理系统 OA管理系统设计与实现 HTML网页设计结课作业
基于HTML美食餐饮文化项目的设计与实现 HTML学生网页设计作业 计算机毕业设计 HTML+CSS+JavaScript
👨‍🎓静态网站的编写主要是用HTML DIV+CSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的前端Html5代码都是一致的,本网页适合修改成为各种类型的产品展示网页,比如美食、旅游、摄影、电影、音乐等等多种主题,希望对大家有所帮助。 🧡 【作者主页——🔥获取更多优质源码】 🧡 【web前端期末大作业——🔥🔥毕设项目精品实战案例(1000套)
IT司马青衫
2022/08/17
8520
基于HTML美食餐饮文化项目的设计与实现 HTML学生网页设计作业 计算机毕业设计 HTML+CSS+JavaScript
【 web网页设计期末课程大作业】基于HTML+CSS+JavaScript智慧路灯综合管理系统
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,
IT司马青衫
2022/08/10
7010
jQuery基础图文系列
jquery的入口函数是在html所有标签都加载后才执行,而JavaScript的window.onload事件是等到所有内容加载完后才执行。
菲宇
2019/07/31
4.7K0
jQuery基础图文系列
计算机毕业设计:基于HTML学校后台用户登录界面模板源码
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工程师,
IT司马青衫
2022/08/18
3.1K0
计算机毕业设计:基于HTML学校后台用户登录界面模板源码
后台添加菜单信息如何在前端循环遍历?
前端页面模块,根据所属类别展示信息,点击子菜单的时候,会显示出具体产品特点,产品功能介绍的界面。
王小婷
2018/08/10
1.2K0
后台添加菜单信息如何在前端循环遍历?
【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (1000套) 】 🧡 程序员有趣的告白方式:【💌HTML七夕情人节表白网页制作 (110套) 】 🌎超炫酷的Echarts大屏可视化源码:【🔰 echarts大屏展示大数据平台可视化(150套) 】 🎁 免费且实用的WEB前端学习指南: 【📂web前端零基础到高级学习视频教程 120G干货分享】 🥇 关于作者: 历任研发工
IT司马青衫
2022/08/10
1.3K0
【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格
代码看起来有点复杂,但是不难看懂,提取datagrid的title和历遍数据得重新写入一个新的table
用户1149182
2018/10/08
1.5K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格
推荐阅读
使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]
2.6K0
SSM 项目 ——— 小米商城后台管理系统
3.7K0
【学生毕业设计】基于web学生信息管理系统网站的设计与实现(13个页面)
1K0
Minima黑色响应式后台管理模板
2K0
基于HTML+CSS+JavaScript角色后台管理系统设计毕业论文源码
1.2K0
基于jsp+servlet图书管理系统之后台用户信息插入操作
5.3K0
学生个人博客网页设计作品 学生个人网页模板 个人网页制作 HTML学生个人网站作业设计
2K0
基于web在线餐饮网站的设计与实现——仿Coco线上订奶茶饮料6个页面(HTML+CSS+JavaScript)
6290
学生个人单页面网页作业 学生网页设计成品 静态HTML网页单页制作 dreamweaver网页设计与制作代码 web前端期末大作业
1.8K0
VFP+VUE碰撞出火花来了,我入门猫框后开始摸索开发自己的系统
7820
SpringBoot-06 员工管理系统
1.4K0
基于HTML电商购物项目的设计与实现——html+css+javascript+jquery+bootstarp响应式图书商城
1K0
【计算机毕业设计】html学生管理系统 OA管理系统设计与实现 HTML网页设计结课作业
6770
基于HTML美食餐饮文化项目的设计与实现 HTML学生网页设计作业 计算机毕业设计 HTML+CSS+JavaScript
8520
【 web网页设计期末课程大作业】基于HTML+CSS+JavaScript智慧路灯综合管理系统
7010
jQuery基础图文系列
4.7K0
计算机毕业设计:基于HTML学校后台用户登录界面模板源码
3.1K0
后台添加菜单信息如何在前端循环遍历?
1.2K0
【计算机毕业设计】基于HTML+CSS+JavaScript学生宿舍管理系统
1.3K0
ASP.NET MVC5+EF6+EasyUI 后台管理系统(92)-打印EasyUI 的datagrid表格
1.5K0
相关推荐
使用ABP打造SAAS系统(2)——前端框架选择[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档