专栏首页二爷记Python爬取杜赛博客教程内容,应用pdfkit打印pdf文件

Python爬取杜赛博客教程内容,应用pdfkit打印pdf文件

听说杜佬的博客更新了,尤其是django教程,本渣渣由于没有钱充值网络,所以一直是断网状态下,本身也是有搜集教程进文件夹吃灰的通病,因此就有了这样一篇渣渣文,应用python爬取杜赛博客教程内容,同时应用pdfkit打印pdf文件,快进本渣渣的收藏夹吃灰吧!

收藏等于学废系列,一直吃灰,一直爽!

话说本渣渣就是自带渣渣属性,学了一年多了,还是渣渣,不像杜佬一年就搞定了django,还出了教程,还有各种输出!

其实前面早已经分享过一篇吃灰文章:Python知乎专栏爬虫,pdfkit专栏文章制作PDF电子书

不妨自行查看,所以又是一篇吃老本的文章,棺材板盖不住了嘿!

Python模块之pdfkit介绍及用法

1.pdfkit 库安装

pip install pdfkit #wkhtmltopdf 的Python封装包

2.安装wkhtmltopdf.exe文件 注:pdfkit是基于wkhtmltopdf的python封装,所以需要安装wkhtmltopdf.exe。wkhtmltopdf是轻量级软件,非常很容易安装。

下载地址: https://wkhtmltopdf.org/downloads.html

下载wkhtmltopdf

下载完成后,一路next,将 wkhtmltopdf 安装好。

务必要记住安装地址,找到wkhtmltopdf.exe文件所在的绝对路径,后面要用到。

我这里是默认路径""C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe""

安装wkhtmltopdf

渣渣已经给各位老哥们打包好了!我这里打包的是win7 64位!

链接: https://pan.baidu.com/s/1tQ-IgPjtVjs9OrlHjAKCDA 提取码: tj2j

3.pdfkit用法

pdfkit.from_url('http://www.duoxiqi.cn', 'out.pdf')  #从URL生成
pdfkit.from_file('test.html', 'out.pdf')  #从文件生成
pdfkit.from_string('Hello!', 'out.pdf')  #从字符串生成

配置方法

options = {
    'page-size': 'Letter',
    'margin-top': '0.75in',
    'margin-right': '0.75in',
    'margin-bottom': '0.75in',
    'margin-left': '0.75in',
    'encoding': "UTF-8",
    'custom-header' : [
        ('Accept-Encoding', 'gzip')
    ]
    'cookie': [
        ('cookie-name1', 'cookie-value1'),
        ('cookie-name2', 'cookie-value2'),
    ],
    'no-outline': None
}

pdfkit.from_url('http://www.duoxiqi.cn', 'out.pdf', options=options)

文档参考:https://pypi.org/project/pdfkit/

回归正题,爬杜佬的博客,代码真规范啊!但是也遇到坑了!!!

获取链接的时候,竟然有重复的链接出现,本来想用set简单的去重,发现去重后顺序错乱,还是老老实实写判断吧!

判断去重

if url not in urls:
    urls.append(url)

参考代码:

    def get_urls(self):
        urls = [self.url, ]
        response=requests.get(self.url,headers=self.headers,timeout=8)
        html=response.content.decode('utf-8')
        req=etree.HTML(html)
        hrefs=req.xpath('//div[@class="card-text"]/p/a/@href')
        for href in hrefs:
            url=f'https://www.dusaiphoto.com{href}'
            if url not in urls:
                urls.append(url)

        print(len(urls))


        return urls

获取详情,标题的字符需要替换,不然存储文档会报错!

pattern = r"[\/\\\:\*\?\"\<\>\|]"
h1 = re.sub(pattern, "_", h1)  # 替换为下划线

参考代码:

    def get_content(self,url,category):
        response = requests.get(url, headers=self.headers, timeout=8)
        html = response.content.decode('utf-8')
        req = etree.HTML(html)

        #获取标题
        h1=req.xpath('//h1[@class="article-title"]/text()')[0]
        title=f'<h1>{h1}</h1>'
        pattern = r"[\/\\\:\*\?\"\<\>\|]"
        h1 = re.sub(pattern, "_", h1)  # 替换为下划线
        print(h1)

        #获取详情
        detail = req.xpath('//div[@id="article_body"]')[0]
        content = etree.tostring(detail, encoding='utf-8').decode()

        #版权
        author=f"来源:杜赛博客-原文链接:{url}"

        data = f'{title}\n{content}\n{author}'

        self.dypdf(h1,data,category)

        return data

应用pdfkit打印pdf文件

需要注意的是 编码需要注明

同时如果是应用的字符串,需要补全html代码!

pdfkit.from_string('Hello!', 'out.pdf')  #从字符串生成

参考代码:

    def dypdf(self,h1,data,category):
        datas = f'<html><head><meta charset="UTF-8"></head><body>{data}</body></html>'
        print("开始打印内容!")
        pdfkit.from_string(datas, f'{category}/{h1}.pdf', configuration=confg)
        print("打印保存成功!")

爬取打印的pdf教程,本渣渣也已经打包好了给各位大佬哥!!

关注本渣渣微信公众号,回复 杜佬django教程 自取!

如果想要获取该pdf电子书

可关注我微信公众号 :二爷记

回复 杜佬django教程 获取!

感谢杜佬用爱发电,本渣渣仅仅只是一个搬运工!!!

完整源码获取可关注微信公众号,后台 回复 感谢杜佬 自取!

本文分享自微信公众号 - 二爷记(eryeji),作者:调侃二大爷

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-08-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django个人博客,三小时带你入门Django框架

    Django框架是时下Python语言最热门的Web框架之一,它是一个功能完善、文档齐全、开发敏捷、配置简单的Web框架,能够快速将一个想法实现,使用它能够快速...

    二爷
  • python百度关键词相关搜索词采集,链轮查询采集exe工具

    在百度搜索结果页面底部通常有9个相关词,其他搜索引擎同样也都有相关搜索,只是显示个数稍微有些不同,例如,我们搜索什么是SEO,新手如何学SEO等词组,目的就是为...

    二爷
  • Python结巴分词,字符串余弦相似度算法实现关键词筛选及整理

    字符串余弦相似性算法是通过利用我们初中就学过的三角函数中的余弦定理来计算两个字符串的相似度,它是定义在向量空间模型(Vector Space Model)中的。

    二爷
  • TCGAG多组学联合分析数据库

    之前我们在介绍GEPIA的时候,说这个数据库只能用于TCGA表达数据的一些分析。但是对于TCGA数据而言,里面包括相同样本的表达、突变、拷贝数、甲基化以及临床信...

    医学数据库百科
  • 从中国制造到中国智造,打通工业互联网的任督二脉

    全球经济格局近年来发生了重大变化,“中国制造”原有优势逐步减弱,在资源和环境等多方面约束下,面对日益激烈的市场竞争,产业升级的压力迫在眉睫。

    TVP官方团队
  • CocoaPod知识整理

    Pod库是很重要的组成部分,大部分第三方库都是通过CocoaPod的方式引入和管理,同时项目中的部分功能也可以用Pod库来做模块化。 本文是对CocoaPod...

    落影
  • 地方政府建设招商大数据平台的必要性

    招商引资是一个地区经济发展的重要助推器。在当前经济运行新常态下,城市发展面临经济增速放缓、投资意愿减弱、资源环境约束加剧等新情况、新问题,招商引资工作形势不容乐...

    拼命三郎
  • Spring Boot & ES 实战,值得参考!

    Spring Boot 2.0.5默认的elasticsearch版本很低,这里我们用最新版本6.4.1

    Java技术栈
  • 【JavaWeb】106:导航栏的实现

    请求路径为:categoryServlet,其携带的methodName为queryAll。

    刘小爱
  • 腾讯“互联网+”指数·四川篇(2015年第一期)

    ? 1.腾讯“互联网+”指数及其代表意义   在宏观经济领域,为了能客观、快速地了解经济运行及发展趋势,我们往往会采用一些指标、指数对经济现状进行描述。这些指...

    腾讯研究院

扫码关注云+社区

领取腾讯云代金券