当前位置 : 主页 > 编程语言 > python >

Python爬虫入门案例:200元的外包,爬取某网站文档内容保存PDF

来源:互联网 收集:自由互联 发布时间:2022-06-15
知识点: requests css选择器 第三方库: requests pip install requests parsel pip install parsel pdfkit pip install pdfkit 开发环境: 版 本:anaconda5.2.0(python3.6.5) 编辑器:pycharm (安装包/安装教程/激活码


知识点:

  • requests
  • css选择器

第三方库:

  • requests >>> pip install requests
  • parsel >>> pip install parsel
  • pdfkit >>> pip install pdfkit

开发环境:

  • 版 本:anaconda5.2.0(python3.6.5)
  • 编辑器:pycharm (安装包/安装教程/激活码/使用教程/插件[翻译插件/主题/汉化包])
  • 软件环境: wkhtmltopdf 把html文件转成pdf

本节课上课流程思路:

一. 数据来源分析

确定要爬目标: 文档内容

这些文档数据内容是可以从哪里获取的

分析数据的过程:

  • 鼠标右键点击检查或者F12 打开开发者工具 选择 network
  • 通过开发者工具进行搜索(相关一些数据) 虽然返回数据 (字体编码)
  • 搜索没有返回数据 可以查看本身网址发送请求 服务器返回的数据内容
  • 分析多个文章的url地址区别 请求url地址情况
  • 二. 代码实现过程

  • 发送请求, 对于文章列表页面发送请求
  • 获取数据, 获取网页源代码
  • 解析数据, 提取文章url地址或者文章标题
  • 发送请求, 对于文章详情页url地址发送请求
  • 获取数据, 获取网页源代码
  • 解析数据, 提取文章内容
  • 保存数据, 保存成html文件内容
  • 保存PDF, 需要把html文件转成PDF文件内容
  • 多页爬取
  • 导入模块

    import requests # 数据请求模块 第三方模块 pip install requests 在CMD里面即可安装
    import parsel # 数据解析模块 第三方模块 pip install parsel
    import os # 文件操作模块 内置模块
    import pdfkit

    1. 发送请求, 对于文章列表页面发送请求

    # 请求url地址
    url = 'https://www.chinawenwang.com/zlist-55-1.html'
    # 携带请求头参数 headers 请求头是字典类型 键值对形式 一个关键字对应值 中间是用:隔开的
    # User-Agent 浏览器的基本信息
    # 请求头是为了把python代码伪装成浏览器对于服务器发送请求 (披着羊皮狼)
    headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36'
    }
    # 请求方式: 常见 get请求 post请求
    response = requests.get(url=url, headers=headers)
    # <Response [200]> response响应对象 <> 200 状态码 表示请求成功
    # 获取的是响应体的文本数据 (乱码) 转码

    2. 获取数据, 获取网页源代码 response.text (html字符串数据内容)

    print(response.text)

    3. 解析数据, 提取文章url地址或者文章标题

    # 解析数据方法: re正则表达式[可以直接匹配字符串数据内容] css选择器 xpath (对于html字符串数据进行数据转换)
    # 如果你是想要从事相关工作 招聘需求有一个要求 re css xpath 都要会
    selector = parsel.Selector(response.text) # 把html字符串数据进行数据转换 selector 对象
    # attr(href) 属性选择器 获取a标签里面的href属性 css语法 在VIP课程都一节课内容 (2.5小时内容)
    # getall() 获取所有 返回列表 匹配多个数据 都是返回列表
    href = selector.css('.d-flex h2 a::attr(href)').getall()[:-2]

    4. 发送请求, 对于文章详情页url地址发送请求

    for index in href:
    response_1 = requests.get(url=index, headers=headers)

    5. 获取数据, 获取网页源代码

    print(response_1.text)

    6. 解析数据, 提取文章内容

    selector_1 = parsel.Selector(response_1.text)

    获取文章标题 get() 获取一个 返回的字符串数据

    title = selector_1.css('.content-page-header-div h1::text').get()
    content = selector_1.css('.content-page-main-content-div').get()
    html_content = html_str.format(article=content)

    7. 保存数据, 保存成html文件内容

    # 文件路径以及文件名后缀
    html_path = html_filename + title + '.html'
    pdf_path = pdf_filename + title + '.pdf'
    with open(html_path, mode='w', encoding='utf-8') as f:
    f.write(html_content)

    8. 保存PDF, 需要把html文件转成PDF文件内容

    # 配置软件 指定软件位置
    config = pdfkit.configuration(wkhtmltopdf=r'C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe')
    # 把html文件里面的内容 转成pdf 保存到 pdf文件夹
    pdfkit.from_file(html_path, pdf_path, configuration=config)
    print('正在保存: ', title)

    Python爬虫入门案例:200元的外包,爬取某网站文档内容保存PDF_爬虫



    网友评论