python+requests爬取百度文库ppt
实验网站:https://wenku.baidu.com/view/c7752014f18583d04964594d.html
在下面这种类型文件中的请求头的url打开后会得到一个页面

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

你将页面上zoom对应的值在一个新的网页打开之后会发现,这个就是ppt中的图片
你可以多打开几个“getrequest?doc_id”类型的请求头看一下它们的Request URL,你会发现我们只需要改变pn对应的数字就能得到文库中对应的PPT图片

知道了这个我们就可以先把图片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
所以在我们得到地址之后用一些函数处理一下就可以了
因为代码不太复杂,所以就不再详细叙述了
import requests class Spider:
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'
} def Create_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') + 2
end = html.find('","')
#切割字符串
url_pic = html[start:end]
#将图片url字符串,转化为可访问的url地址
url_pic=url_pic.replace('\\','')
#print(url_pic)
self.request_pic(url_pic,i) def request_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的更多相关文章
- python+selenium爬取百度文库不能下载的word文档
有些时候我们需要用到百度文库的某些文章时,却发现需要会员才能下载,很难受,其实我们可以通过爬虫的方式来获取到我们所需要的文本. 工具:python3.7+selenium+任意一款编辑器 前期准备:可 ...
- python+selenium+bs4爬取百度文库内文字 && selenium 元素可以定位到,但是无法点击问题 && pycharm多行缩进、左移
先说一下可能用到的一些python知识 一.python中使用的是unicode编码, 而日常文本使用各类编码如:gbk utf-8 等等所以使用python进行文字读写操作时候经常会出现各种错误, ...
- python 利用selenium爬取百度文库的word文章
今天学习如何使用selenium库来爬取百度文库里面的收费的word文档 from selenium import webdriver from selenium.webdriver.common.k ...
- Python3实现QQ机器人自动爬取百度文库的搜索结果并发送给好友(主要是爬虫)
一.效果如下: 二.运行环境: win10系统:python3:PyCharm 三.QQ机器人用的是qqbot模块 用pip安装命令是: pip install qqbot (前提需要有request ...
- Python爬虫 - 爬取百度html代码前200行
Python爬虫 - 爬取百度html代码前200行 - 改进版, 增加了对字符串的.strip()处理 源代码如下: # 改进版, 增加了 .strip()方法的使用 # coding=utf-8 ...
- requests爬取百度音乐
使用requests爬取百度音乐,我想把当前热门歌手的音乐信息爬下来. 首先进行url分析,可以看到: 歌手网页: 薛之谦网页: 可以看到,似乎这些路劲的获取一切都很顺利,然后可以写代码: # -*- ...
- python 3 爬取百度图片
python 3 爬取百度图片 学习了:https://blog.csdn.net/X_JS612/article/details/78149627
- python爬虫-爬取百度图片
python爬虫-爬取百度图片(转) #!/usr/bin/python# coding=utf-8# 作者 :Y0010026# 创建时间 :2018/12/16 16:16# 文件 :spider ...
- 写一个python 爬虫爬取百度电影并存入mysql中
目标是利用python爬取百度搜索的电影 在类型 地区 年代各个标签下 电影的名字 评分 和图片连接 以及 电影连接 首先我们先在mysql中建表 create table liubo4( id in ...
随机推荐
- Openstack Nova 添加计算节点(六.一)
Openstack Nova 添加计算节点(六.一) # 重要的两点: 1 时间同步 2 yum 源 # 安装软件: yum install openstack-selinux openstack-n ...
- 【Mysql】[Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes
今天用Navicat导入的时候报错 [Err] 1153 - Got a packet bigger than 'max_allowed_packet' bytes 原因是数据库默认是16M的数据,这 ...
- 【葵花宝典】一天掌握Docker
第1章Docker 概述 1-1 Docker是什么 没有虚拟化技术的原始年代 我们仔细想想,在没有计算虚拟化技术的"远古"年代,如果我们要部署一个应用程序(Application ...
- Python3.9的http.client.py下的HTTPMessage类中的方法getallmatchingheaders的bug修复建议
在官方网站已经提交相关issue,不过目前看好像还没有修复.具体的bug位置为: http文件夹下的client.py文件,代码位置为:类HTTPMessage下的方法getallmatchinghe ...
- Hadoop2.7.7阿里云安装部署
阿里云的网络环境不需要我们配置,如果是在自己电脑上的虚拟机,虚拟机的安装步骤可以百度.这里是单机版的安装(也有集群模式的介绍)使用Xshell连接阿里云主机,用命令将自己下载好的安装包上传到服务器 # ...
- 1.2V升压到3V和3.3V的升压芯片
1.2V镍氢电池升压到3V和3.3V输出,1.2V升压3V,1.2V升压3.3V稳压输出供电的芯片. PW5100 是一款低静态电流.达效率. PFM 模式控制的同步升压变换器. PW5100 所需的 ...
- nmap的理解与利用(初级)
在命令窗口下输入命令等待,可以用回车来查看进度 nmap进行探测之前要把域名通过dns服务器解析为ip地址,我们也可以使用指定的dns服务器进行解析. nmap --dns-servers 主机地址 ...
- 如何创建一个Java项目
目录 新建项目 项目信息配置 创建Java类 编译和运行 新建项目 首先双击eclipse进入到eclipse页面. 菜单"File"下的"New"里" ...
- 【练习】goroutine chan 通道 总结
1. fatal error: all goroutines are asleep - deadlock! 所有的协程都休眠了 - 死锁! package mainimport("fmt&q ...
- libuv线程通信
目录 1.说明 2.API 2.1.uv_async_init 2.2.uv_async_send 2.3.uv_close 3.代码示例 1.说明 用于多线程之间传递参数 2.API 2.1.uv_ ...