首发于: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 etreefrom urllib import parsedef 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 nexturlurl = '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,有趣味的敌人能够尝试下

关注我获取更多内容