关于python:入门级项目采集python进阶教程

40次阅读

共计 1782 个字符,预计需要花费 5 分钟才能阅读完成。

首发于:https://mp.weixin.qq.com/s/Xo…

前言

  • 难度:入门级
  • python 版本:3.7
  • 次要播种:爬虫教训 +100;python 教训 +100

次要会用到 python 和爬虫技术,入门级我的项目,偏简略,适宜新人练手,看这个之前最好是对 python 和爬虫有一些理解

需要

需要名称:采集《python 进阶》教程

网页:https://docs.pythontab.com/in…

需要:采集网页上的所有进阶内容,并整顿成文档

采集具体的进阶教程内容即可

需要剖析

咱们看下需要,须要采集的货色并不是很多,咱们先关上网页看一下

看下目录,数据量不是很多

大抵数了一下就几十个页面,这很少了

对应下需要,依据教训,列下咱们须要解决的 一些问题

  1. 单页面抓取问题
  2. 多页面 url 获取问题
  3. 整顿成文档

单页面抓取问题

这个问题其实就是看下抓取页面的申请结构

咱们先找下源代码中是否有蕴含咱们所须要的数据

在页面上找个略微非凡的词

比如说“小清爽”

键盘按下 ctrl+ U 查看下源代码

在按下 ctrl+F,查找“小清爽”

能够看到,源码中就间接有咱们所须要的数据,那么能够判断,这八成就是一个 get 申请

如果没有反爬,那就比较简单了

间接构建一个最简略的 get 申请试一下

import requests 
r = requests.get('https://docs.pythontab.com/interpy/')
print(r.text)
print(r)

运行一下,打印输出的是有咱们须要的数据(因为太多就不贴了),完满!

多页面 url 获取问题

咱们能够看到所须要采集的页面几十个,并不是很多,就需要指标而言,咱们其实是能够一个个的复制下来,然而这样没有技术范儿,而且如果说咱们采集的页面很多呢,几百几千,甚至几十万,手动复制的效率切实过于低下

咱们关上网页

能够看到有个 Next 按钮

这里就有下一页的 url

咱们跳到最初一页,就会发现 Next 没有了

那么咱们是不是就能够通过这种形式来拿到各个页面的 url

咱们始终去提 Next 按钮获取下一页的 url,直到最初一页,没有 Next,判断完结

整顿成文档

原本想将抓取到的内容 (去标签) 保留成 txt 的,而后在转成 pdf 格局,难看一些

不过因为保留的内容没有格局,转换后并不难看,所以决定不去标签,间接存成 html 文件

而后在转换成 pdf

这里有个在线的将 html 转成 pdf,还是满好用的:https://www.aconvert.com/cn/e…

代码实现

逻辑理清了,代码实现就比较简单了

间接高低代码

import requests 
from lxml import etree
from urllib import parse
def get_html(url):
    """ 网页采集数据,并保留到文件中

    Args:
        url (str): 待采集的 url

    Returns:
        str: 下一页的 url
    """
    r = requests.get(url)
    html = etree.HTML(r.text)
    content = html.xpath('//div[@role="main"]')
    content0 = etree.tostring(content[0])
    # print(content0)
    with open("python 进阶教程.html","ab+") as f:
        f.write(content0)
    _next = html.xpath("//a[contains(text(),'Next »')]/@href")
    if not _next:
        return ''
    nexturl = parse.urljoin(url,_next[0])
    print(nexturl)
    return nexturl
url = 'https://docs.pythontab.com/interpy/'
while 1:
    url = get_html(url)
    if not url:
        break 

运行代码会在当前目录生成一个 python 进阶教程.html 文件

关上看一眼

还是能够的,不过我这里把它转换成更通用的 pdf 类型

html 转换成 pdf

先关上在线转换的网页:https://www.aconvert.com/cn/e…

抉择 html 文件

抉择转换的指标格局

点击转换

下载文件

关上 pdf 看一下

格局还是很完满的!

注:

其实 python 有个 pdfkit 库,能够将一个 html 转换成 pdf,有趣味的敌人能够尝试下

关注我获取更多内容

正文完
 0