爬虫案例-将网页内容转为PDF/HTML文件

效果展示:

下载的PDF文件

在这里插入图片描述
PDF文件的内部展示

在这里插入图片描述

实现逻辑:

  1. 使用urllib爬取网页,获取该url的响应内容
  2. 利用BeautifulSoup选取响应中你需要的节点
  3. 拼接数据
  4. 保存HTML文件
  5. 使用wkhtmltopdf将HTML文件转换为PDF文件

相关代码:

from bs4 import BeautifulSoup #页面解析,获取数据
import urllib.request,urllib.error #指定URL,获取页面数据
import pdfkit


def main():
    #1.使用urllib爬取网页,获取该url的响应内容
    baseUrl = "https://blog.csdn.net/j1451284189/article/details/122420310"
    header = {
    "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3776.400 QQBrowser/10.6.4212.400"}
    request = urllib.request.Request(url = url,headers=header)
    html = ""
    try:
        response = urllib.request.urlopen(request)
        html = response.read().decode("utf-8")
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reson"):
            print(e.reson)
    #2.利用BeautifulSoup选取响应中你需要的节点
    bs = BeautifulSoup(html,"html.parser")
    blog_detail = bs.find_all('div', class_="article_content")[0]
    file_name = bs.find_all('h1', class_="title-article")[0]
    file_name = file_name.text
    # 3.拼接数据
    html = \
        '''
            <!DOCTYPE html>
                <html lang="en">
                <head>
                    <meta charset="UTF-8">
                    <title>Title</title>
                </head>
                <body>
                    {}
                </body>
            </html>
        '''.format(blog_detail)
    # 4.保存HTML文件
    try:
        with open(r'.\blog\{}.html'.format(file_name), 'w', encoding='utf-8') as f:
            f.write(html)
    except Exception as e:
        print('文件名错误')
    # 5.使用wkhtmltopdf将HTML文件转换为PDF文件
    try:
        config = pdfkit.configuration(wkhtmltopdf=r'D:\LenovoSoftstore\wkhtmltopdf\bin\wkhtmltopdf.exe')
        pdfkit.from_file(
           '.\\blog\{}.html'.format(file_name),
            r'.\blog\{}.pdf'.format(file_name),
            configuration=config
        )
        print(r'--文件下载成功:\blog\{}.pdf'.format(file_name))
    except Exception as e:
        print(r'--文件转换为PDF失败)

其他

​ 参考:https://blog.csdn.net/weixin_54733110/article/details/117884699(这篇文章讲得挺详细的,我的博客思路是参考本篇文章,我的前面的1-2步实现与这篇博客不同,最后下载下来的PDF文件效果一致)

​ 这个案例是爬取的一篇CSDN博客详情页的博客内容主体,能够成功的原因是因为这个网站是静态的,如果是那种动态的网页,这种方法是行不通的,当然只爬取CSDN博客是可以的。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值