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

 更新时间:2021年04月20日 16:31:23   作者:松鼠爱吃饼干  
这篇文章主要介绍了Python爬虫之爬取某文库文档数据,文中有非常详细的代码示例,对正在学python的小伙伴们有很好地帮助,需要的朋友可以参考下

一、基本开发环境

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安装需要的相关模块即可。

三、目标网页分析

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

接口链接:

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

接口的请求参数

四、整体思路

  • 请求网页返回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变量访问权限控制详解

    这篇文章主要介绍了Python变量访问权限控制详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-06-06
  • python如何求数组连续最大和的示例代码

    python如何求数组连续最大和的示例代码

    这篇文章主要介绍了python如何求数组连续最大和的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • 用Python调用win命令行提高工作效率的实例

    用Python调用win命令行提高工作效率的实例

    今天小编就为大家分享一篇用Python调用win命令行提高工作效率的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)

    Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题(小白级操作)

    这篇文章主要介绍了Ubuntu 20.04安装Pycharm2020.2及锁定到任务栏的问题,本教程给大家讲解的很详细,非常适合小白级操作,需要的朋友可以参考下
    2020-10-10
  • win8.1安装Python 2.7版环境图文详解

    win8.1安装Python 2.7版环境图文详解

    在本篇内容里小编给大家分享了关于win8.1安装Python 2.7版环境的详细步骤和方法,有兴趣的朋友们跟着学习下。
    2019-07-07
  • Python自动检测SSL证书是否过期的实现示例

    Python自动检测SSL证书是否过期的实现示例

    SSL证书是有有效期的,一旦过期就会失效,从而带来安全风险,本文主要介绍了Python自动检测SSL证书是否过期的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • python操作ie登陆土豆网的方法

    python操作ie登陆土豆网的方法

    这篇文章主要介绍了python操作ie登陆土豆网的方法,涉及Python操作页面元素的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-05-05
  • python语音识别的转换方法

    python语音识别的转换方法

    语音识别技术,也被称为自动语音识别,目标是以电脑自动将人类的语音内容转换为相应的文字。应用包括语音拨号、语音导航、室内设备控制、语音文档检索、简单的听写数据录入等。本文给大家介绍python语音识别的方法,感兴趣的朋友一起看看吧
    2021-10-10
  • 用Python脚本生成Android SALT扰码的方法

    用Python脚本生成Android SALT扰码的方法

    发布Android 有偿应用时需要随机生成 SALT 扰码夹在文件中,以下是 Python脚本(当然你选择 C/Java/SHELL/Perl 或别的都行)
    2013-09-09
  • Python3基础教程之递归函数简单示例

    Python3基础教程之递归函数简单示例

    这篇文章主要给大家介绍了关于Python3基础教程之递归函数简单示例的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用Python3具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-06-06

最新评论