python3 爬去公司内部的ppt资料

小白学Python之爬虫篇(一)——爬取PPT网站模板 说明 菜狗大学生一枚,本着用什么学什么的原则,对之前简单学习的爬虫进行略微系统的整理,一方面方便以后复习,另一方面也希望给需要的人一点参考,毕竟看了那么多大佬的博客,是时候开始回报社会了哈哈哈(尴尬笑)。 本人对Python的了解不是很多,只是因为某个小项目的需求所以学习了一下,而且我很菜的(大实话),因此如果下文有误,还望各位批评指正。本文的简易爬虫参考了某位大佬的博客,大佬的文章思路清晰,写的... 阅读详情

在写爬虫的过程中遇到如下错误:

WinError 10061 - No Connection Could be made

解决方法:

 1. 打开IE internet options
 2. Connections -> Lan Setting
 3. 勾上automatically detect settings

封装好的db操作

# -*- coding:utf-8 -*-
#__author__ = 'ecaoyng'

import pymysql
import time

class DBOperation:

    def __init__(self, tb_name):
        self.db_host = 'x'
        self.db_port = 3306
        self.db_user = 'x'
        self.db_pwd = 'x'
        self.db_name = 'x'
        self.tb_name = tb_name

    def get_time(self):
        now_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        return now_time
    '''
    set up connection with db
    '''
    def db_conn(self):
        exec_time = self.get_time()
        try:
            conn = pymysql.connect(host=self.db_host,port=self.db_port,
                                   user=self.db_user,passwd=self.db_pwd,db=self.db_name)
            return conn
        except Exception as e:
            print((u'[%s]: Errors during db connection:%s' % (exec_time, e)))
            return None
    '''
    set up cursor
    '''
    def db_cursor(self, conn):
        try:
            cur = conn.cursor()
            return cur
        except Exception as e:
            print(e)
            return None

    '''
    db close
    '''
    def db_close(self,cur,conn):
        exec_time = self.get_time()
        cur.close()
        conn.close()
        print(u'[%s]: db closed' % exec_time)



    '''
    db operations
    '''
    def tb_insert_url(self,cur,conn,urls):
        exec_time = self.get_time()
        tb_exist_sql = """CREATE TABLE IF NOT EXISTS """+ self.tb_name + """ (
             URL  VARCHAR(200) NOT NULL
             )"""
        try:
            cur.execute(tb_exist_sql)
            print(u'[%s]: try to create table %s if not exists.' % (exec_time, self.tb_name))
            conn.commit()

            sql_insert_url = 'INSERT INTO ' + self.tb_name +' VALUES (%s)'
            cur.executemany(sql_insert_url,urls)
            conn.commit()
        except Exception as e:
            print(u'[%s]: Errors during insert into %s:%s' % (exec_time, self.tb_name ,e))


if __name__ == '__main__':

    db=DBOperation('ECNSlides')
    db_conn = db.db_conn()
    db_cur = db.db_cursor(db_conn)
    db.db_close(db_cur,db_conn)

下面是爬虫程序

# -*- coding:utf-8 -*-
#__author__ = 'ecaoyng'

from ESlides.src.DBOperation import *
import urllib.request
import re
import time


class ESlidesCrawler:
    def __init__(self):
        self.target_link='https://mediabank.ericsson.net/search/slides/group%20function%20%28gf%29'
        self.user_agent = 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36'
        self.user_headers = {
            'User-Agent': self.user_agent,
            'Accept' : 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',
            'Accept - Encoding' : 'gzip, deflate, br',
            'Accept-Language' : 'zh-CN,zh;q=0.8',
            'Cookie' : 'PHPSESSID=57i0onm69eei46g6g23ek05tj2',
            'Host' : 'mediabank.ericsson.net',
            'Referer' : 'https://mediabank.ericsson.net/'

        }
        self.save_dir = 'C:/Users/ecaoyng/Desktop/PPT/'

    '''
    get local time
    '''
    def get_time(self):
        now_time=time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
        return now_time
    '''
    get page links
    '''
    def get_page(self):
        now_time=self.get_time()
        try:
            request = urllib.request.Request(self.target_link, headers=self.user_headers)
            response = urllib.request.urlopen(request)
            pageCode = response.read().decode('utf-8')
            return  pageCode
        except urllib.request.URLError as e:
            print(u'%s Errors during connect to target link:%s' % (now_time, e))
            return None
    '''
    get initial target links
    '''
    def get_links(self):
        now_time = self.get_time()
        page_code = self.get_page()
        if page_code is not None:
            page_links = []
            try:
                pattern = re.compile(
                    '<li id=.*?>.*?<a href="/media/(.*?)" class="thumb" draggable="true">',re.S)
                items = re.findall(pattern, page_code)
                for item in items:
                    item = '%s%s%s' % ('https://mediabank.ericsson.net/details/', item, '/download/original')
                    page_links.append(item)
                return page_links
            except Exception as e:
                print(u'[%s]: Errors during parser target link:%s' % (now_time, e))
                return None
        else:
            print('page code returns none')
            return None
    '''
    save links into database
    '''
    def save_links(self):
        now_time = self.get_time()
        links=self.get_links()
        print(links)
        try:
            if links is not None:
                db = DBOperation('ECNSlides')
                db_conn = db.db_conn()
                db_cur = db.db_cursor(db_conn)
                print(u'[%s]: start to urls insert to db' % now_time)
                db.tb_insert_url(db_cur, db_conn, links)
                print(u'[%s]: write urls insert to db successfully' % now_time)
            else:
                print(u'[%s]: URL is None when insert to db' % now_time)
                pass
        finally:
            db.db_close(db_cur, db_conn)

    '''
    download ECN slides with params by http
    '''
    def slides_download_params(self):

        links = self.get_links()
        try:
            for url in links:
                now_time = self.get_time()
                file_pattern = re.compile(
                    '.*?/(\d+)/download/original$',re.S)
                file_name = re.findall(file_pattern, url)
                file_path = self.save_dir + ''.join(file_name) + '.pptx'

                print('Downloading to %s ...' % file_path)

                save_file = open(file_path,'wb')
                save_file.write(urllib.request.urlopen(url).read())
                save_file.close()


                # with urllib.request.urlopen(url) as slide:
                #     with open(file_path, 'wb') as outfile:
                #         outfile.write(slide.read())
                #
                #     break
        except Exception as e:
            print(u'[%s]: Errors during download slides: %s.' % (now_time,e))






    '''
    download ECN slides with remote db
    '''
    def slides_download_db(self):
        pass













if __name__ == '__main__':
    crawler=ESlidesCrawler()
    # crawler.save_links()
    crawler.slides_download_params()

问题出现了,发现在http中敲入下载地址,类似于

https://mediabank.ericsson.net/details/Organization%20simple/83138/download/original

但是python代码中用这个地址返回的不是pptx文件,而是html文件.
要知道具体返回的是什么文件的方法如下:

# reobj=urllib.request.urlopen(url)
# print(type(reobj))
# print(reobj.info())
# print(reobj.getcode())

可以看到正常如果下载的是zip文件,则返回的信息如下:

Content-Type: application/x-zip-compressed
Last-Modified: Mon, 23 May 2016 07:50:56 GMT
Accept-Ranges: bytes
ETag: "0f075d6c7b4d11:0"
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Wed, 29 Nov 2017 07:07:27 GMT
Connection: close
Content-Length: 55712699

但是本来是ppt文件,却下载了

Cache-Control: no-cache
Pragma: no-cache
Content-Length: 11743
Content-Type: text/html
Expires: Wed, 29 Nov 2017 07:04:04 GMT
Server: Microsoft-IIS/8.0
Set-Cookie: SMTargetSession=HTTPS%3A%2F%2Ffss%2Eericsson%2Ecom%2Fsiteminderagent%2Fredirectjsp%2Fredirect%2Dinternal%2Ejsp%3FSPID%3DMediabankIntern%26RelayState%3Dhttps%253A%252F%252Fmediabank%2Eericsson%2Enet%252Fdetails%252FOrganization%252520simple%252F83138%252Fdownload%252Foriginal%26SMPORTALURL%3Dhttps%253A%252F%252Ffss%2Eericsson%2Ecom%252Faffwebservices%252Fpublic%252Fsaml2sso%26SAMLTRANSACTIONID%3D176beb36%2Dfeb953b6%2D9a53d42e%2D58810506%2D087b72ac%2Da4e3; path=/
Set-Cookie: ASPSESSIONIDACATSTTS=FOLBNEGCIBMFCPILNEMHOHFN; path=/
X-Powered-By: ASP.NET
X-WAM-LOC: LP2-2
Date: Wed, 29 Nov 2017 07:05:04 GMT
Connection: close
Set-Cookie: BIGipServerWAM_PRD_Login=rd423o00000000000000000000ffff9958f466o50001; path=/

Content-Type: text/html 说明是html文件。将其打开之后发现是公司的安全认证页面.

于是开始思索是否可以用cookie的方式来抓取.
(未完待续)

爬虫基础之Python简单爬取实例-----爬取网站的PPT模板 本文仅仅简单介绍了如何使用Python爬虫网站的PPT模板,而requests提供了大量能使我们快速便捷地处理数据的函数和方法。 阅读详情

相关推荐

Python实现PowerPoint(PPT/PPTX)到PDF的批量转换

本文介绍了使用Python将PowerPoint演示文稿(PPT、PPTX等格式文件)转换为PDF文件,如何在转换时设置页面大小,以及如何转换单页幻灯片为PDF文件。同时,本文还提供了一个免费在线转换工具,支持将各种文件转换为PDF文件并下载保存。

Eiceblue的专栏 4236

python爬取海量PPT模板,再也不用辛苦地找模板了

还在担心没有PPT模板吗?那就使用python自动化下载海量PPT模板吧!

一名在读学生 7852

使用Python自动写PPT

需求 有一个题库: 前四个工作表属于必答题。 按如下顺序制作每一张PPT: 必答题-1-乐园销售【题目】 必答题-1-乐园销售【答案标红】 必答题-1-顾客服务【题目】 必答题-1-顾客服务【答案标红】 必答题-1-综合管理【题目】 必答题-1-综合管理【答案标红】 必答题-1-设备维保【题目】 必答题-1-设备维保【答案标红】 必答题-2-乐园销售【题目】 必答题-2-乐园销售【答案标红】 必答题-2-顾客服务【题目】 必答题-2-顾客服务【答案标红】 必答题-2-综合管理【题目】 必答题-2-综合管理

小小明-代码实体的专栏 2万+

智能爬取PPT模板

本次项目所要使用的库文件有requests、Beautifulsoup、tkinter、selenium、zipfile、rarfile、lxml。以上模块的安装请自行百度,这里不作详细介绍。使用软件为Pycharm,个人比较推荐这个,当然你用VScode也可以哦。 项目通过对输入的关键字,在第一PPT网页的搜索栏中进行搜索,对搜索结果中选定PPT网页链接后,进入该网页并获取下载链接,由于下载文件为压缩包,我们调用相应的函数进行解压并存储。

waterteam的博客 2343

Python办公自动化 5.1 Python操作ppt:win32com 使用教程 操作复制ppt PowerPoint

文章目录5.1.1 pip安装win32com5.1.2 win32com复制ppt模板 win32com PowerPoint 官方文档:https://docs.microsoft.com/zh-cn/office/vba/api/powerpoint.shape.copy 5.1.1 pip安装win32com pip install pypiwin32 由于我已经安装过了,所以提示已经安装: 5.1.2 win32com复制ppt模板 有时候我们需要对ppt的模板进行复制,然后再添加相应内容,由

超级大洋葱的博客 5675

Python爬虫反爬,你应该从这篇博客开启,UA反爬,Cookie 特定参数反爬

Python爬虫的反爬之路开始啦

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 2万+

【Python爬虫实战入门】:教你一个程序实现PPT模版自由

我们发现我们获取的链接的后缀名是不同的,另外这些PPT都是没有名字的,不方便后续保存。到这里其实还有一个问题没有解决,除了以链接下载PPT模版外,还有通过百度网盘链接下载的,这个由于有些复杂,另外通过网盘下载的模版数量很少,这里我们可以直接跳过不下载。在第二次请求的时候我们就可以获取PPT模版的下载地址,接下来就和上面的数据提取一样,利用正则表达式将我们的PPT下载链接提取出来即可。我们发现,除了第一页的url外,从第二页开始,url都是规律变化的,那首先我们可以尝试一下在第一页的url后面加上。

书山有路勤为径,学海无涯苦作舟。 4151

小甲鱼python3课件ppt

小甲鱼python3课件,下载了4.2G视频后提取了里面所有的ppt课件。

python 公司内部使用 版权_python3 爬去公司内部的ppt资料

# -*- coding:utf-8 -*-#__author__ = 'ecaoyng'from ESlides.src.DBOperation import *import urllib.requestimport reimport timeclass ESlidesCrawler:def __init__(self):self.target_link='https://mediabank.e...

weixin_39623082的博客 89

python3.ppt

Some material adapted from Upenn cis391 slides and other sources • Use classes & functions defined in another file • A Python module is a file with the same

Python-Python3入门(PPT61页).ppt

Python-Python3入门

Python代码操作PPT:PowerPoint演示文稿的合并与拆分

文章介绍了通过的Python进行PowerPoint演示文稿的合并与拆分的操作,同时提供的步骤介绍以及代码示例。

Eiceblue的专栏 3547

ZYNQ Linux环境下PS端I2C驱动OV5640摄像头全流程解析

本文详细解析了在ZYNQ Linux环境下,通过PS端I2C驱动OV5640摄像头的完整流程。内容涵盖从Vivado硬件配置、PetaLinux系统构建、设备树节点添加,到用户空间I2C编程与寄存器配置实战,并提供了关键的调试技巧与常见问题排查方法,帮助开发者快速实现嵌入式视觉应用的传感器配置。

vulkan6gpu的博客 853

PPT Master 完整指南:3 步把文档变成可编辑的 PowerPoint 演示文稿

PPT Master 是一款免费开源的 AI 演示文稿生成工具,能把 PDF、Word 等文档直接转成**原生可编辑**的 PowerPoint。学生、职场人和内容创作者都能用,几分钟就能拿到一份带图表、动画和语音旁白的 PPT,数据全程留在本地。 ## 你可能正遇到的场景 周五下午,你收到一份 40 页的行业报告,明早 9 点要上会。手工排版至少要 3 小时,图表还得另找数据、逐个调格式。

gitblog_00529的博客 739

ubuntu20.4源码安装最新gcc(gcc V12.2)

Ubuntu20.4自带的gcc为V9.4.0的版本,老版本的gcc存在不支持新版本C语言规范,在配置、编译、安装应用软件或工具时,可能存在不能正确安装的问题。(比如:libpqxx-7.7.4在配置时要求c++17版本的支持,但gcc V9.4.0版本不支持c++17)。因此本文介绍ubuntu20.4的系统下载最新gcc12.2版本源码,并进行本地编译、安装。本节内容包括gcc12.2的必备库安装和gcc12.2安装两部分内容组成。

q544344318的博客 1万+

STM32G030C8T6 ADC+DMA实战:同时采集外部电压和芯片温度的完整代码流程

本文详细介绍了STM32G030C8T6芯片通过ADC+DMA实现外部电压和芯片内部温度采集的完整流程。从硬件设计到CubeMX配置,再到驱动模块化实现与系统优化,提供了高精度多通道采集系统的实战指南,特别适合嵌入式开发者在工业控制和环境监测项目中应用。

weixin_42653691的博客 468

PPT Master:把任意文档变成可编辑的 PowerPoint 演示,三步上手

PPT Master 是一套开源的 AI 演示文稿生成工作流:把 PDF、Word、网页甚至一个主题交给它,它就在用户本机输出一份原生可编辑的 PPTX 文件(即可以直接在 PowerPoint 里逐元素修改的文件)。全程不用写代码,素材也不会离开本机。 ## 它能帮你做什么 - **文档变完整 deck**:输入一份 40 页的年报 PDF,输出 15 页的演示文稿,分页、论证逻辑、版面都替

gitblog_00028的博客 793

深入解析:如何在Visual Studio中高效编译libredwg与libdxfrw

本文详细介绍了在Visual Studio中高效编译libredwg与libdxfrw的完整流程,包括环境配置、源码获取、CMake技巧及常见错误解决方案。针对CAD开发者,提供了从基础编译到项目集成的实用指南,帮助快速处理DWG/DXF文件,提升开发效率。

weixin_29215391的博客 232

PPT Master完整指南:把文档变成原生可编辑PowerPoint的最快路径

周五下午四点,离向老板交季度汇报只剩两小时,而你手上只有一份三十页的PDF和一堆散落的截图。这时你可以把文件丢给 [PPT Master](https://link.gitcode.com/i/2209b8a8f2dd3a2cbd23b33357fcf60b),它是一个开源工作流:在你本机的 AI 编辑器里读入文档、规划叙事、设计版式,最后导出一个在 PowerPoint 里能逐个对象点击修改的

gitblog_00011的博客 1094

Pwntools不只是PWN:用它写个自动化Fuzz脚本,挖掘Linux命令行工具漏洞

本文探讨了如何利用Pwntools构建自动化Fuzz脚本,挖掘Linux命令行工具中的漏洞。通过详细的代码示例和实战案例,展示了Pwntools在Fuzzing中的高效性和灵活性,特别适合快速验证特定场景的安全问题。文章还提供了进阶技巧和避坑指南,帮助安全研究人员快速上手并提升测试效率。

weixin_28718345的博客 221

半导体材料仿真:二维材料仿真_(1).二维材料的基本概念

在半导体材料仿真领域,二维材料因其独特的物理和化学性质而受到广泛关注。二维材料,也称为二维纳米材料,是指在二维空间(通常是平面)上具有原子级厚度的材料。这些材料的厚度通常在几个纳米甚至单个原子层的范围内,使得它们在电子、光学、热学和机械性能上表现出与传统三维材料显著不同的特性。本节将详细介绍二维材料的基本概念,包括它们的分类、结构、性质以及在半导体材料仿真中的应用。

2401_87715305的博客 1546

python读取ppt文本内容_Python输出PowerPoint(ppt)文件中全部文字信息的方法

本文实例讲述了Python输出PowerPoint(ppt)文件中全部文字信息的方法。分享给大家供大家参考。具体分析如下:下面的代码依赖于windows com,所以必须在机器上安装PowerPoint才能用,可以将PPT文件中的所有纯文本信息进行输出到指定的文件,非常实用。import win32comfrom win32com.client import Dispatch, constants...

weixin_32864391的博客 1576

一步一步教你如何安装IP-Guard(客户端WINDOWS篇)

1、安装完服务器后,在服务器右下角有一个IP-GUARD图标:如图 2、点图标右键选注册: 3、注册成功后, 4、在开始菜单里选生成客户端安装包。 5、生成客户端安装包成功,安装名字可以任意,但是最好是英文名字。 6、将客户端安装程序复制到桌面。 7、退出所有杀毒软件、安全卫士、电脑管家等然后运行 8、安装完成后,立即重启计算机。IPguard客户端安装完成。 9、这样在控制里就可以看到已经安装客户端的计算机,在线显示蓝色,灰色表示计算机已经离线货关机 ...

IP-Guard专栏 5628

从文档到演示文稿:PPT Master如何用AI重新定义PowerPoint创作

你是否厌倦了在PowerPoint中手动调整格式、寻找模板、对齐元素?是否曾为制作专业演示文稿而花费数小时甚至数天时间?PPT Master正在改变这一切——这是一个开源AI驱动的演示文稿生成系统,能够将任何文档或主题转换为原生可编辑的PowerPoint文件,让你专注于内容而非格式。 ## 🎯 核心关键词与长尾关键词 **核心关键词:** AI演示文稿生成、原生PowerPoint编辑、开

gitblog_01151的博客 1009

AI使能的SVD算子:基于深度学习的矩阵分解方法

奇异值分解(Singular Value Decomposition, SVD)是线性代数中一种重要的矩阵分解方法,广泛应用于信号处理、数据降维、推荐系统等领域。传统SVD算法虽然精确,但在处理大规模矩阵时面临计算复杂度高、内存需求大等问题。本文提出了一种基于深度学习神经网络的SVD算子实现方法,完全摒弃传统数值算法,仅使用PyTorch框架构建的神经网络模型来完成大规模信道矩阵的SVD分解与还原。

huanghm88的专栏 1335

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: python *args 和**kwargs的用法
下一篇: python爬虫之cookie方式自动登录巴比特网
海持Alvin
博客等级 码龄19年 436粉丝 97原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海持Alvin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值