python+requests爬取百度文库ppt

摘要:
实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html在下面这种类型文件中的请求头的url打开后会得到一个页面你会得到如下图一样的页面你将页面上zoom对应的值在一个新的网页打开之后会发现,这个就是ppt中的图片你可以多打开几个“getrequest?doc_id”类型的请求头看一下它们的RequestURL,你会发现我们只需

实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html

在下面这种类型文件中的请求头的url打开后会得到一个页面

python+requests爬取百度文库ppt第1张

你会得到如下图一样的页面

python+requests爬取百度文库ppt第2张

你将页面上zoom对应的值在一个新的网页打开之后会发现,这个就是ppt中的图片

你可以多打开几个“getrequest?doc_id”类型的请求头看一下它们的Request URL,你会发现我们只需要改变pn对应的数字就能得到文库中对应的PPT图片

python+requests爬取百度文库ppt第3张

知道了这个我们就可以先把图片url弄出来,然后再依次访问这些url,并下载至本地

要注意的是,如下面的url地址

https://wkretype.bdimg.com/retype/zoom/c7752014f18583d04964594d?pn=4&raww=1080&rawh=810&o=jpg_6&md5sum=046b21875cb4e60170f5521eea9253dc&sign=22044930c7&png=102985-135328&jpg=219095-369954

你如果复制之后粘贴在浏览器的地址框里面,浏览器会把这个地址转化成下面这个类型之后再去访问

https://wkretype.bdimg.com//retype//zoom//c7752014f18583d04964594d?pn=4&raww=1080&rawh=810&o=jpg_6&md5sum=046b21875cb4e60170f5521eea9253dc&sign=22044930c7&png=102985-135328&jpg=219095-369954

所以在我们得到地址之后用一些函数处理一下就可以了

因为代码不太复杂,所以就不再详细叙述了

importrequests

classSpider:
    def __init__(self):
        #定义url前缀
        self.url_pre = "https://wenku.baidu.com/browse/getrequest?doc_id=c7752014f18583d04964594d&pn="
        #定义url后缀
        self.url_suf = "&rn=1&type=ppt&callback=bd__cbs__sv0n59"
        #请求头
        self.headers ={
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36'}

    defCreate_url(self):
        num = input('输入爬取ppt总页数:')
        for i in range(1,int(num)+1):
            #构建对应页数PPT的url地址
            self.url = self.url_pre+str(i)+self.url_suf
            #请求后得到页面源码
            response = requests.get(self.url,headers=self.headers)
            html =response.text
            #因为我们需要从页面源码中拿到PPT中图片对应地址,所以可以通过字符串匹配等方式得到,这里我就用数组查找就行
            #找出图片地址在源码中起始和终止位置
            start = html.find(':"http') + 2end = html.find('","')
            #切割字符串
            url_pic =html[start:end]
            #将图片url字符串,转化为可访问的url地址
            url_pic=url_pic.replace('\','')
            #print(url_pic)
self.request_pic(url_pic,i)

    defrequest_pic(self,url_pic,num):
        #print(url_pic)
        response = requests.get(url_pic, headers=self.headers)
        num = str(num)+'.png'with open(num,'wb') as f:
            f.write(response.content)


if __name__ == '__main__':
    spider =Spider()
    spider.Create_url()

免责声明:文章转载自《python+requests爬取百度文库ppt》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CentOS7 Ceph分布式集群部署Consul--客户端访问Consul服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

(四)WebGIS中通过行列号来换算出多种瓦片的URL 之离线地图

文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.前言 在前面我花了两个篇幅来讲解行列号的获取,也解释了为什么要获取行列号。在这一章,我将把常见的几种请求瓦片时的URL样式罗列出来,并且给出大致的解释。 我在这里将地图分为离线地图和在线地图。所谓离线地图,即保存在本地而没有发...

通过浏览器批量下载文件到zip压缩包

/** * 批量下载证件照、文件 * * @return */ @GetMapping("/downLoadImgs") @Transactional public void downLoadImgs(HttpServletRequest request,@Reques...

URL的反向解析

简单来说就是可以给我们的URL匹配规则起个名字,一个URL匹配模式起一个名字。 这样我们以后就不需要写死URL代码了,只需要通过名字来调用当前的URL 举个简单的例子: url(r'^home', views.home, name='home'),  # 给我的url匹配模式起名(别名)为 home,别名不需要改,路径你就可以随便改了,别的地方使用这个路径,...

xxl-job编写GULE(Java)运行模式,带执行参数(url)

packagecom.xxl.job.service.handler; importcom.xxl.job.core.log.XxlJobLogger; importcom.xxl.job.core.biz.model.ReturnT; importcom.xxl.job.core.handler.IJobHandler; public class q...

python 网络爬虫(二)

一、编写第一个网络爬虫 为了抓取网站,我们需要下载含有感兴趣的网页,该过程一般被称为爬取(crawling)。爬取一个网站有多种方法,而选择哪种方法更加合适,则取决于目标网站的结构。 首先探讨如何安全的下载网页,让后介绍3中爬去网站的常见方法: -- 爬取网站地图; -- 遍历每个网页的数据库 ID; -- 跟踪网页链接; 1、下载网页 要想爬取网页,我们...

Liferay7开发体系简介

参考:https://www.cnblogs.com/starcrm/p/6022502.html  Liferay SDK 开发体系 主要分6种: Portlet Hook Theme Layout Templates Web Modules Ext Portlet :类似于servlet的web组件,编译后是war包,是页面的组成元素,可以把它...