利用Python爬取年终总结等公文,并保存为公文格式的word文档
本帖最后由 zz443470785 于 2022-10-14 22:52 编辑马上年底了,又到了开始各种总结、述职的时候,虽然每年总结都差不多,但对于我这种文字功底差的人来说写东西无从下手,正好利用最近学的python爬虫知识,从网上爬取一些总结模板参考参考。
代码写的很一般,仅供各位朋友学习交流使用,严禁用作商业用途,如有侵权,请联系我删除!
效果如下:
源代码如下:
```python
"""
-*- coding: utf-8 -*-
文件名:爬取好范文网文章.py
作者:nobody
环境: PyCharm,Python 3.9
日期:2022/8/8 21:42
功能:爬取 好范文网 文章,并下载到本地保存为word公文格式
"""
import time
import random
import requests
import re
from bs4 import BeautifulSoup
from w3lib.html import remove_tags
from docx.oxml.ns import qn
from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT# 设置对象居中、对齐等。
from docx.shared import Inches# 设置图像大小
from docx.shared import Pt# 设置像素、缩进等
from docx.shared import RGBColor# 设置字体颜色
# 爬取网页
def get_url(URL, SIGN):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'}
html = requests.get(URL, headers=headers)
html.encoding = 'utf-8'
soup = BeautifulSoup(html.text, 'lxml')
# 根据标签定位
text = soup.select(SIGN)
return text
# 创建doc
def get_docx(TITLE, BODY):
document = Document()# 创建一个空白文档
head0 = document.add_heading(level=1)# 创建一级标题
head0.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 标题居中
title_run = head0.add_run(TITLE, )# 添加标题
title_run.font.size = Pt(24)# 设置标题大小
title_run.font.name = 'Times New Roman'# 标题英文字体
title_run.element.rPr.rFonts.set(qn('w:eastAsia'), '方正小标宋简体')# 标题中文字体
title_run.font.color.rgb = RGBColor(0, 0, 0)# 字体颜色
document.styles['Normal'].font.name = '宋体'# 设置西文字体
document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '仿宋_GB2312')# 设置中文字体
p = document.add_paragraph()# 添加一个段落
p_run = p.add_run(BODY, )
p.paragraph_format.space_before = Pt(30)# 段前30磅
p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY# 设置两端对齐方式
p.paragraph_format.line_spacing = Pt(28.8)# 设置行间距
# p.paragraph_format.space_after = Pt(0) # 设置段后间距
p.paragraph_format.first_line_indent = Inches(0.5)# 设置首行缩进
p_run.font.color.rgb = RGBColor(0, 0, 0)# 设置字体颜色
p_run.font.size = Pt(16)# 设置字号
TITLE = re.sub('([^\u4e00-\u9fa5\d])', '', TITLE)# 删除标题中的特殊字符
name = 'D:\\IDM下载\\书\\' + TITLE + '.docx'
document.save(name)
def main():
n = 0
menus = get_url('http://www.haoword.com', '.infobox .indexleft .infoco .lm .news_title h2 a')
menus_url = []
for menu_url in menus:
menus_url.append(menu_url['href'])
print(menus_url)
for menu_url in menus_url:
time.sleep(random.random())
results = get_url(menu_url, '.infobox .lmleft .infoco2 .lm_addon .articles3 ul li a')
for result in results:
title_url = result['href']# 文章链接
title = result['title']# 获取标题
print(f'{title}:{title_url}')
time.sleep(random.random())
articles_results = get_url(title_url, '.infobox .detail .content p')# 去掉正文前的标题
body = remove_tags(str(articles_results))# 获取正文
get_docx(title, body)
n += 1
print(f'爬取完毕!共爬取 {n} 篇文章。')
if __name__ == '__main__':
start = time.perf_counter()
main()
end = time.perf_counter()
print(f'耗时 {end - start} 秒。')
```
相关库请自行安装,有问题欢迎评论区留言~ ngxihho 发表于 2023-12-31 23:35
Traceback (most recent call last):
File "C:%users\Administrator\Desktop\sw\312.py", line 11, in
...
没有安装 requests 库 这个实用,感谢分享 感谢分享 感谢分享 谢谢大佬的分享,可否给个产品呢! 感谢分享 感谢分享,回头自己实施word 操作。 感谢分享。 先下下来学习,感谢大佬 夕尘幽兰 发表于 2022-10-20 16:08
这个实用,感谢分享
初学python,写的一般,感谢支持 实践一波