Python爬虫之爬取某文库文档数据


Posted in Python onApril 21, 2021

一、基本开发环境

Python 3.6

Pycharm

二、相关模块的使用

import os
import requests
import time
import re
import json
from docx import Document
from docx.shared import Cm

安装Python并添加到环境变量,pip安装需要的相关模块即可。

三、目标网页分析

Python爬虫之爬取某文库文档数据

网站的文档内容,都是以图片形式存在的。它有自己的数据接口

接口链接:

https://openapi.book118.com/getPreview.html?&project_id=1&aid=272112230&t=f2c66902d6b63726d8e08b557fef90fb&view_token=SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1&page=1&callback=jQuery18304186406662159248_1614492889385&_=1614492889486

接口的请求参数

Python爬虫之爬取某文库文档数据

四、整体思路

  • 请求网页返回response数据(字符串)
  • 通过re模块匹配提取中间的数据(列表)索引取0(字符串)
  • 通过json模块是把提取出来的数据转换成json模块
  • 通过遍历获取每张图片的url地址
  • 保存图片到本地文件夹
  • 把图片保存到word文档
  • 爬虫代码实现

五、爬虫代码实现

def download():
    content = 0
    for page in range(1, 96, 6):
        # 给定 2秒延时
        time.sleep(2)
        # 获取时间戳
        now_time = int(time.time() * 1000)
        url = 'https://openapi.book118.com/getPreview.html'
        # 请求参数
        params = {
            'project_id': '1',
            'aid': '272112230',
            't': 'f2c66902d6b63726d8e08b557fef90fb',
            'view_token': 'SqX7ktrZ_ZakjDI@vcohcCwbn_PLb3C1',
            'page': f'{page}',
            '_': now_time,
        }
        # 请求头
        headers = {
            'Host': 'openapi.book118.com',
            'Referer': 'https://max.book118.com/html/2020/0427/8026036013002110.shtm',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
        }
        response = requests.get(url=url, params=params, headers=headers)
        # 使用正则表达式提取内容
        result = re.findall('jsonpReturn\((.*?)\)', response.text)[0]
        # 字符串转json数据
        json_data = json.loads(result)['data']
        # 字典值的遍历
        for value in json_data.values():
            content += 1
            # 拼接图片url
            img_url = 'http:' + value
            print(img_url)
            headers_1 = {
                'Host': 'view-cache.book118.com',
                'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
            }
            # 请求图片url地址 获取content二进制数据
            img_content = requests.get(url=img_url, headers=headers_1).content
            # 文件名
            img_name = str(content) + '.jpg'
            # 保存路径
            filename = 'img\\'
            # 以二进制方式保存 (图片、音频、视频等文件都是以二进制的方式保存)
            with open(filename + img_name, mode='wb') as f:
                f.write(img_content)

注意点:

1、一定要给延时,不然后面接口数据会请求不到。

2、请求图片url的时候headers参数需要写完整,否则保存图片是无法打开的

3、命名最好是给定数字,1.jpg、2.jpg 这样,方便后续保存到word

爬虫部分的代码还是比较简单的,没有什么特别的难度。

爬取这些文档,都是需要打印或者查询所以要把这些单张的图片都保存到word文档里面。

六、写入文档

def save_picture():
    document = Document()
    path = './img/'
    lis = os.listdir(path)
    c = []
    for li in lis:
        index = li.replace('.jpg', '')
        c.append(index)
    c_1 = sorted(list(map(int, c)))
    print(c_1)
    new_files = [(str(i) + '.jpg') for i in c_1]
    for num in new_files:
        img_path = path + num
        document.add_picture(img_path, width=Cm(17), height=Cm(24))
        document.save('tu.doc')  # 保存文档
        os.remove(img_path)  # 删除保存在本地的图片

到此这篇关于Python爬虫之爬取某文库文档数据的文章就介绍到这了,更多相关python爬取文档数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python 序列化 pickle/cPickle模块使用介绍
Nov 30 Python
Python实现分割文件及合并文件的方法
Jul 10 Python
python制作最美应用的爬虫
Oct 28 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
启动targetcli时遇到错误解决办法
Oct 26 Python
python3+PyQt5实现拖放功能
Apr 24 Python
Django框架搭建的简易图书信息网站案例
May 25 Python
python使用if语句实现一个猜拳游戏详解
Aug 27 Python
Python基于进程池实现多进程过程解析
Apr 30 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
Sep 29 Python
python 爬取华为应用市场评论
May 29 Python
教你怎么用Python selenium操作浏览器对象的基础API
Jun 23 Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
python基础之匿名函数详解
Apr 21 #Python
You might like
Extjs学习笔记之二 初识Extjs之Form
2010/01/07 Javascript
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
JS幻灯片可循环播放可平滑旋转带滚动导航(自写)
2013/08/05 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
jquery日历控件实现方法分享
2014/03/07 Javascript
AngularJS入门教程之学习环境搭建
2014/12/06 Javascript
iPhone手机上搭建nodejs服务器步骤方法
2015/07/06 NodeJs
JS实现淘宝支付宝网站的控制台菜单效果
2015/09/28 Javascript
JS制作适用于手机和电脑的通知信息效果
2016/10/28 Javascript
vue-cli 使用vue-bus来全局控制的实例讲解
2018/09/15 Javascript
微信小程序实现选项卡效果
2018/11/06 Javascript
微信运维交互机器人的示例代码
2018/11/12 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
react+antd 递归实现树状目录操作
2020/11/02 Javascript
vue 动态添加的路由页面刷新时失效的原因及解决方案
2021/02/26 Vue.js
[02:38]DOTA2亚洲邀请赛 IG战队巡礼
2015/02/03 DOTA
用python + openpyxl处理excel2007文档思路以及心得
2014/07/14 Python
Python实现mysql数据库更新表数据接口的功能
2017/11/19 Python
django 实现编写控制登录和访问权限控制的中间件方法
2019/01/15 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
Pytorch训练过程出现nan的解决方式
2020/01/02 Python
Python爬虫爬取微信朋友圈
2020/08/06 Python
python中使用np.delete()的实例方法
2021/02/01 Python
canvas实现飞机打怪兽射击小游戏的示例代码
2018/07/09 HTML / CSS
挪威太阳镜和眼镜网上商城:SmartBuyGlasses挪威
2016/08/20 全球购物
大学生活学习的自我评价
2013/12/03 职场文书
法学专业毕业生自荐信范文
2013/12/18 职场文书
学校党员对照检查材料
2014/08/28 职场文书
勿忘国耻9.18演讲稿(经典篇)
2014/09/14 职场文书
公司委托书格式范本
2014/09/16 职场文书
2014学习十八届四中全会精神思想汇报范文
2014/10/23 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
初中军训感言
2015/08/01 职场文书
Win11查看设备管理器
2022/04/19 数码科技
详细介绍Next.js脚手架完整搭建封装
2022/04/26 Javascript