爬取步骤:

  • 1.确定需求:
    爬取的内容及内容来源
  • 2.发送请求:
    请求url地址–>文章列表url
    请求方式–get
    请求参数字段添加“User-Agent”
  • 3.获取数据:
    获取数据–响应体文本数据(网页源代码)
  • 4.解析数据
    解析方法:re正则表达式/css选择器/xpath
    解析提取内容:提取文章url
  • 5.发送请求
    请求url地址–>文章url
    请求方式–>get
    请求参数字段添加“User-Agent”
  • 6.获取数据:
    获取数据–>响应体文本数据(网页源代码)
  • 7.解析数据:
    解析方法:re正则表达式/css选择器/xpath
    解析提取内容:提取文章内容/文章标题
  • 8.保存数据:
    需要先把获取的内容保存为html文件,然后将html转成PDF
    需要用到htmltopdf(下载:https://www.xitongzhijia.net/soft/219178.html)
"""
爬取步骤:
1.确定需求:爬取的内容及内容来源
2.发送请求:请求url地址--文章列表url请求方式--get请求参数字段添加--User-Agent
3.获取数据:获取数据--响应体文本数据(网页源代码)
4.解析数据解析方法:re正则表达式/css选择器/xpath解析提取内容--文章url
5.发送请求请求url地址--文章url请求方式--get请求参数字段添加--User-Agent
6.获取数据:获取数据--响应体文本数据(网页源代码)
7.解析数据:解析方法:re正则表达式/css选择器/xpath解析提取内容--提取文章内容/文章标题
8.保存数据:需要先把获取的内容保存为html文件,然后使用htmltopdf将html转成PDFre正则可以直接提取字符串数据--response.text就是html字符串数据
parsel 需要先把html字符串转成可解析的对象
"""
import timeimport requests  # 数据请求模块
import re  # 正则表达式模块
import parsel  # 数据解析模块
import os  # 文件操作模块
import pdfkit  # 转成pdfhtml_str = """
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
{article}
</body>
</html>
"""html_filename = 'html\\'  # 定义文件夹名称
# 判断该文件夹是否存在,不存在则创建
if not os.path.exists(html_filename):os.mkdir(html_filename)pdf_filename = 'pdf\\'  # 定义文件夹名称
# 判断该文件夹是否存在,不存在则创建
if not os.path.exists(pdf_filename):os.mkdir(pdf_filename)for page in range(1, 10):# 文章列表的url地址url = f'https://www.chinawenwang.com/zlist-66-{page}.html'# 请求头【字典形式】 User-Agent:表示浏览器基本信息headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'}# 发送请求response = requests.get(url=url, headers=headers)# print(response.text)# 解析数据# 用re正则表达式获取文章url地址 .*? 可以匹配任意字符,除了"\n"# 如果需要匹配"\n“则需要在后面加上re.S# url_list = re.findall(' <h2><a href="(.*?)" class="juhe-page-left-div-link">(.*?)</a></h2>', response.text, re.S)# .*?-- .可以匹配任意字符(除了\n) *匹配前一个字符0个或多个 ? 非贪婪匹配模式# url_list = re.findall(' <h2><a href="(.*?)" class="juhe-page-left-div-link">(.*?)</a></h2>', response.text)url_list = re.findall(' <h2><a href="(.*?)" class="juhe-page-left-div-link">', response.text)# 正则匹配出来的数据,返回的是列表,这里返回的每个元素都是由文章标题和url地址组成的元组for link in url_list:response_1 = requests.get(url=link, headers=headers)# 将html字符串数据转成可解析对象selector = parsel.Selector(response_1.text)title = selector.css('.content-page-header-div h1::text').get()# 文件名中不允许包含一些特殊字符,需进行替换title = re.sub(r'[\/:*?"<>|]', '_', title)# print(f'title-->{title}')# 获取包含html标签content = selector.css('.content-page-main-content-div').get()article = html_str.format(article=content)html_path = html_filename + title + '.html'  # html文件的路径/文件名/后缀pdf_path = pdf_filename + title + '.pdf'  # pdf文件的路径/文件名/后缀try:with open(html_path, mode='w', encoding='utf-8') as f:f.write(article)# 配置wkhtmltopdf程序config = pdfkit.configuration(wkhtmltopdf='D:\\software\\wkhtmltopdf\\bin\\wkhtmltopdf.exe')# 将html转成pdfpdfkit.from_file(html_path, pdf_path, configuration=config)print(f'{title}--保存成功')time.sleep(1)except Exception as e:print(e)continueif len(url_list) < 25:break

python 爬取文章并保存为pdf相关推荐

  1. Python爬取公众号保存成Word

    Python爬取公众号 1. 相关工具 2. 实现原理 2.1 HTML解析 3. 编码 3.1 pip装包 3.2 HTML解析 3.3 下载图片 3.4 保存到word中 3. 结束语 1. 相关 ...

  2. python 爬取文章(内含图片,表格,文章夹杂)

    最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! 使用Beautiful Soup 库 Beautiful so ...

  3. python爬取文章保存_爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  4. python爬取文章保存为txt_爬取博主所有文章并保存到本地(.txt版)--python3.6

    闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...

  5. Python爬取网站小说保存txt,pdf文件

    # 爬取小说 http://www.hengyan.com/dir/9495.aspxfrom lxml.html import etree import requests import re imp ...

  6. python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  7. python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析

    序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...

  8. python爬取音乐并保存_Python爬取网易云音乐上评论火爆的歌曲

    前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行 ...

  9. Python爬取网页并存储为pdf

    起因是最近准备学习TensorFlow,找了个网页教程,质量感觉挺好,但是页面广告巨多,不小心就能中雷,就想用爬虫爬下来,净化一下,一开始是拒绝的,因为爬虫下来的话,格式跟网页就不一定一样了,说不定会 ...

  10. python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中

    爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三 ...

最新文章

  1. AutoMapper用法
  2. jquery的deferred对象
  3. IOS CALayer
  4. hdu 4417 划分树
  5. 大神如何一招完美解决Hadoop集群无法正常关闭的问题!| 博文精选
  6. python matlibplot绘制矩阵_matplotlib.pyplot.matshow 矩阵可视化实例
  7. 【codeforces 718 CD】C. Sasha and ArrayD. Andrew and Chemistry
  8. echarts-X轴不从0刻度开始 代码实现
  9. ESXi虚拟机装系统,报错 /vmlinuz has invalid signature 解决方法
  10. POP3、SMTP和IMAP 协议
  11. 从奥卡姆剃刀定律再看决策树
  12. ESPRIT 2019车铣复合编程基础到五轴 走心机 视频教程
  13. java语言基础 : 初识计算机和Java语言-----java初识之路
  14. orcale 期末复习资料整理
  15. 转 | cadence验证仿真工具IUS,IES,irun和xrun
  16. c#通过ffmpeg实现视频转码
  17. 用 Swift 实现通知推送的新手指南
  18. 【wxWidgets 教程】安装、配置、HelloWorld篇(一)
  19. 【Java】炸弹人小游戏
  20. 调用微信公众平台的API,即可查询手机号是否注册

热门文章

  1. 微信模拟地理位置_微信伪装地理位置是什么个原理
  2. 5种方法,加密你的Python代码 !
  3. win10计算机自带的游戏怎么打开方式,win10自带游戏在哪里?手把手教你打开win10自带游戏...
  4. ubuntu 键盘输入法为空_Ubuntu12下键盘输入中文设置 - 卡饭网
  5. php 极光推送别名数组,PHP使用极光推送-Go语言中文社区
  6. Smali语法详解(2)
  7. 黑苹果0004——制作u盘并开始安装
  8. python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
  9. 矩阵的LU分解——MATLAB实现
  10. 行测 资料分析 统计术语篇