python 爬取文章并保存为pdf
爬取步骤:
- 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相关推荐
- Python爬取公众号保存成Word
Python爬取公众号 1. 相关工具 2. 实现原理 2.1 HTML解析 3. 编码 3.1 pip装包 3.2 HTML解析 3.3 下载图片 3.4 保存到word中 3. 结束语 1. 相关 ...
- python 爬取文章(内含图片,表格,文章夹杂)
最近发现了一个挺厉害的人工智能学习网站,内容通俗易懂,风趣幽默,感兴趣的可以点击此链接进行查看:床长人工智能教程 废话不多说,请看正文! 使用Beautiful Soup 库 Beautiful so ...
- python爬取文章保存_爬取博主所有文章并保存到本地(.txt版)--python3.6
闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...
- python爬取文章保存为txt_爬取博主所有文章并保存到本地(.txt版)--python3.6
闲话: 一位前辈告诉我大学期间要好好维护自己的博客,在博客园发布很好,但是自己最好也保留一个备份. 正好最近在学习python,刚刚从py2转到py3,还有点不是很习惯,正想着多练习,于是萌生了这个想 ...
- Python爬取网站小说保存txt,pdf文件
# 爬取小说 http://www.hengyan.com/dir/9495.aspxfrom lxml.html import etree import requests import re imp ...
- python爬取音乐并保存的格式_python爬取QQ音乐歌单歌曲保存到本地,json解析
序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...
- python爬取音乐并保存_python爬取QQ音乐歌单歌曲保存到本地,json解析
序:python强大的功能,可以爬取网上的某些信息,本次主要是通过爬歌单信息熟悉下python基础. 用到知识点: 1.python3.urllib.request.openurl 2.json (j ...
- python爬取音乐并保存_Python爬取网易云音乐上评论火爆的歌曲
前言 网易云音乐这款音乐APP本人比较喜欢,用户量也比较大,而网易云音乐之所以用户众多和它的歌曲评论功能密不可分,很多歌曲的评论非常有意思,其中也不乏很多感人的评论.但是,网易云音乐并没有提供热评排行 ...
- Python爬取网页并存储为pdf
起因是最近准备学习TensorFlow,找了个网页教程,质量感觉挺好,但是页面广告巨多,不小心就能中雷,就想用爬虫爬下来,净化一下,一开始是拒绝的,因为爬虫下来的话,格式跟网页就不一定一样了,说不定会 ...
- python爬取音乐并保存_python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
爬取TOP500的音乐信息,包括排名情况.歌曲名.歌曲时间. 网页版酷狗不能手动翻页进行下一步的浏览,仔细观察第一页的URL: 这里尝试将1改为2,再进行浏览,恰好是第二页的信息,再改为3,恰好是第三 ...
最新文章
- AutoMapper用法
- jquery的deferred对象
- IOS CALayer
- hdu 4417 划分树
- 大神如何一招完美解决Hadoop集群无法正常关闭的问题!| 博文精选
- python matlibplot绘制矩阵_matplotlib.pyplot.matshow 矩阵可视化实例
- 【codeforces 718 CD】C. Sasha and ArrayD. Andrew and Chemistry
- echarts-X轴不从0刻度开始 代码实现
- ESXi虚拟机装系统,报错 /vmlinuz has invalid signature 解决方法
- POP3、SMTP和IMAP 协议
- 从奥卡姆剃刀定律再看决策树
- ESPRIT 2019车铣复合编程基础到五轴 走心机 视频教程
- java语言基础 : 初识计算机和Java语言-----java初识之路
- orcale 期末复习资料整理
- 转 | cadence验证仿真工具IUS,IES,irun和xrun
- c#通过ffmpeg实现视频转码
- 用 Swift 实现通知推送的新手指南
- 【wxWidgets 教程】安装、配置、HelloWorld篇(一)
- 【Java】炸弹人小游戏
- 调用微信公众平台的API,即可查询手机号是否注册
热门文章
- 微信模拟地理位置_微信伪装地理位置是什么个原理
- 5种方法,加密你的Python代码 !
- win10计算机自带的游戏怎么打开方式,win10自带游戏在哪里?手把手教你打开win10自带游戏...
- ubuntu 键盘输入法为空_Ubuntu12下键盘输入中文设置 - 卡饭网
- php 极光推送别名数组,PHP使用极光推送-Go语言中文社区
- Smali语法详解(2)
- 黑苹果0004——制作u盘并开始安装
- python程序设计基础董付国 pdf-董付国《Python程序设计基础 第2版》PDF
- 矩阵的LU分解——MATLAB实现
- 行测 资料分析 统计术语篇