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实现的下载8000首儿歌的代码分享
Nov 21 Python
Python EOL while scanning string literal问题解决方法
Sep 18 Python
Python编程中使用Pillow来处理图像的基础教程
Nov 20 Python
python调用fortran模块
Apr 08 Python
深入理解python函数递归和生成器
Jun 06 Python
python @property的用法及含义全面解析
Feb 01 Python
使用python socket分发大文件的实现方法
Jul 08 Python
flask框架自定义url转换器操作详解
Jan 25 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
关于pycharm 切换 python3.9 报错 ‘HTMLParser‘ object has no attribute ‘unescape‘ 的问题
Nov 24 Python
VSCODE配置Markdown及Markdown基础语法详解
Jan 19 Python
python疲劳驾驶困倦低头检测功能的实现
Apr 04 Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
python基础之匿名函数详解
Apr 21 #Python
You might like
PHP使用DOMDocument类生成HTML实例(包含常见标签元素)
2014/06/25 PHP
ThinkPHP权限认证Auth实例详解
2014/07/22 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
javascript实现颜色渐变的方法
2013/10/30 Javascript
JS处理json日期格式化问题
2015/10/01 Javascript
javaScript数组迭代方法详解
2016/04/14 Javascript
Angular.js 实现数字转换汉字实例代码
2016/07/14 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
理解 Node.js 事件驱动机制的原理
2017/08/16 Javascript
javascript实现鼠标点击生成文字特效
2019/12/24 Javascript
JavaScript浅层克隆与深度克隆示例详解
2020/09/01 Javascript
vue实现lodop打印功能的示例
2020/11/11 Javascript
Webpack3+React16代码分割的实现
2021/03/03 Javascript
[23:18]Spirit vs Liquid Supermajor小组赛A组 BO3 第二场 6.2
2018/06/03 DOTA
利用python代码写的12306订票代码
2015/12/20 Python
各种Python库安装包下载地址与安装过程详细介绍(Windows版)
2016/11/02 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
python环形单链表的约瑟夫问题详解
2018/09/27 Python
python实现汽车管理系统
2018/11/30 Python
简单了解如何封装自己的Python包
2020/07/08 Python
方太官方网上商城:销售方太抽油烟机、燃气灶、消毒柜等
2017/01/17 全球购物
Feelunique中文官网:欧洲最大化妆品零售电商
2020/07/10 全球购物
初级软件工程师面试题 Junior Software Engineer Interview
2015/02/15 面试题
Python里面如何实现tuple和list的转换
2012/06/13 面试题
五年级科学教学反思
2014/02/05 职场文书
弘扬雷锋精神演讲稿
2014/05/10 职场文书
2014小学一年级班主任工作总结
2014/12/05 职场文书
2014年控辍保学工作总结
2014/12/08 职场文书
2015年双拥工作总结
2015/04/08 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
火锅店的开业营销方案范本!
2019/07/05 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS