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中使用中文的方法
Feb 19 Python
urllib2自定义opener详解
Feb 07 Python
windows上安装Anaconda和python的教程详解
Mar 28 Python
Python基于回溯法子集树模板实现图的遍历功能示例
Sep 05 Python
TensorFlow利用saver保存和提取参数的实例
Jul 26 Python
Python玩转Excel的读写改实例
Feb 22 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
Aug 26 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
python处理RSTP视频流过程解析
Jan 11 Python
在Python3.74+PyCharm2020.1 x64中安装使用Kivy的详细教程
Aug 07 Python
Python WebSocket长连接心跳与短连接的示例
Nov 24 Python
Python编程super应用场景及示例解析
Oct 05 Python
Python数据分析之pandas函数详解
Apr 21 #Python
python基础之停用词过滤详解
Apr 21 #Python
python 模拟在天空中放风筝的示例代码
如何使用Python对NetCDF数据做空间相关分析
python实现简单倒计时功能
python Polars库的使用简介
python基础之匿名函数详解
Apr 21 #Python
You might like
ADODB类使用
2006/11/25 PHP
微信第三方登录(原生)demo【必看篇】
2017/05/26 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
安装PHP扩展时解压官方 tgz 文件后没有configure文件无法进行配置编译的问题
2020/08/26 PHP
ext for eclipse插件安装方法
2008/04/27 Javascript
jQuery中append、insertBefore、after与insertAfter的简单用法与注意事项
2020/04/04 Javascript
JavaScript入门之对象与JSON详解
2011/10/21 Javascript
纯js分页代码(简洁实用)
2013/11/05 Javascript
js实现可拖动DIV的方法
2013/12/17 Javascript
通过pjax实现无刷新翻页(兼容新版jquery)
2014/01/31 Javascript
基于JavaScript实现鼠标向下滑动加载div的代码
2016/08/31 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
vue内置指令详解
2018/04/03 Javascript
Vue.js中的extend绑定节点并显示的方法
2019/06/20 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
python基础教程之缩进介绍
2014/08/29 Python
python检查字符串是否是正确ISBN的方法
2015/07/11 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
Python实现扣除个人税后的工资计算器示例
2018/03/26 Python
用Python将mysql数据导出成json的方法
2018/08/21 Python
漂亮的Django Markdown富文本app插件的实现
2019/01/02 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
python3.7通过thrift操作hbase的示例代码
2020/01/14 Python
Python2 与Python3的版本区别实例分析
2020/03/30 Python
Python连接HDFS实现文件上传下载及Pandas转换文本文件到CSV操作
2020/06/06 Python
Python学习之路之pycharm的第一个项目搭建过程
2020/06/18 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
shell的种类有哪些
2015/04/15 面试题
手机促销活动方案
2014/02/05 职场文书
社区活动总结报告
2014/05/05 职场文书
与美同行演讲稿
2014/09/13 职场文书
四风查摆剖析材料
2014/10/10 职场文书
商场广播稿范文
2015/08/19 职场文书