如何使用Python爬取网页并保存为Word文档

假设您是一位热衷于收集好文章的人,每天都希望能够快速获取优质文章并保存在本地,以备离线阅读。但是,手动复制粘贴文章内容并保存为Word文档是一项繁琐的任务,特别是当您需要获取大量文章时。在这篇教程中,我将向您介绍如何使用Python编写一个简单但功能强大的网络爬虫,可以帮助您自动从网站上获取文章并保存为Word文档,让您更轻松地构建自己的文章库。

准备工作

在开始之前,我们需要准备一些工具和环境:

  1. Python环境:确保您已经安装了Python,最好使用Python 3.x版本。您可以在Python官网上下载并安装最新版本的Python。

  2. 代码编辑器:选择一个您喜欢的代码编辑器,例如PyCharm或Visual Studio Code,以便编写Python脚本。

  3. 必要的库:在本教程中,我们将使用Requests、Beautiful Soup和docx库来进行网络请求、解析HTML和创建Word文档。您可以使用以下命令来安装这些库:

    pip install requests beautifulsoup4 python-docx
  4. 网络连接:确保您的计算机能够连接到互联网,因为我们将从网页上获取文章内容。

编写Python爬虫脚本

以下是我们的Python爬虫脚本,它将从指定网站上获取文章并保存为Word文档:

# -*- coding: utf-8 -*-
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 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)
    p.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.JUSTIFY
    p.paragraph_format.line_spacing = Pt(28.8)
    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:\\Download\\Articles\\' + 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')[1:]
            body = remove_tags(str(articles_results))[1:]
            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} 秒。')

使用说明

  • 在脚本中,我们使用了Requests库来发送HTTP请求,Beautiful Soup来解析HTML内容,以及docx库来创建Word文档。

  • 通过修改get_url函数中的URLSIGN参数,您可以指定要爬取的网站和文章内容的选择器。

  • 修改get_docx函数中的文档保存路径和格式以适应您的需求。

  • 运行脚本后,它将自动从指定网站上获取文章并保存为Word文档。

总结

通过这篇教程,您学会了如何使用Python编写一个简单的网络爬虫,用于爬取网站上的文章并保存为Word文档。这个脚本可以帮助您轻松地建立自己的文章库,方便离线阅读和收藏。希望这对您有所帮助!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:如何使用Python爬取网页并保存为Word文档

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年10月8日
下一篇 2023年10月8日

相关推荐

  • Python爬虫教程:批量下载论文模板

    在现代学术研究和论文写作中,寻找合适的论文模板是非常重要的一步。然而,要手动一篇一篇地下载这些模板费时费力。本教程将向您展示如何使用Python编写一个简单而强大的爬虫,自动批量下载论文模板,让您的学术研…

    2023年12月10日
    00
  • 如何使用Python爬取豆瓣电影Top250的电影海报

    作为一位电影爱好者,你可能经常关注豆瓣电影上的Top250电影榜单,想要了解哪些电影备受推崇。而且,你可能也希望将一些你喜欢的电影的海报保存下来,以便日后欣赏或分享。但是,手动一个一个点击电影,然后下载海…

    2023年9月21日
    00
  • 如何使用Python爬取百度贴吧内容

    在今天的教程中,我将向您介绍如何使用Python编写一个简单的网络爬虫,用于从百度贴吧中获取帖子内容。这个教程将帮助您了解如何使用Python的requests库和BeautifulSoup库来获取网页内容,以及如何将爬取到的数据保…

    2023年11月26日
    00
  • 自动获取Steam限时免费游戏信息并实时推送教程

    假设你是一位热爱玩游戏的玩家,而且还热衷于追踪Steam平台上的限时免费游戏优惠。你不想错过任何一个免费游戏的机会,因此你希望能够及时获取到这些信息,并在游戏免费期间立刻领取。但是,为了获取这些信息,你不…

    2023年9月21日
    00
  • 使用Python和Selenium爬取微博评论教程

    随着互联网的发展,数据获取和分析变得越来越重要。在社交媒体上,用户评论是宝贵的信息源,有助于了解用户的看法和情感。本教程将向您介绍如何使用Python和Selenium来爬取微博评论,以便进行分析和洞察。无论您是…

    2023年12月5日
    00
  • 如何使用Python爬取文章并转化为Word文档

    在某个午后,王大神坐在阳台的藤椅上,想着自己的AI技术博客已经很久没更新了。他想要一种方式,可以自动化地从互联网上获取文章,并保存成Word格式。于是,他动手编写了一个Python爬虫脚本,不仅可以爬取文章内容…

    2023年10月12日
    00
  • 为什么你需要了解如何抓取和下载M3U8视频?一步一步教你!

    在这篇文章中,我们将一步一步地讲解如何抓取和下载M3U8视频,介绍使用Python进行网络爬虫的基础知识,并提供一个完整的代码示例来帮助你轻松掌握这个技能。无论你是编程新手还是有经验的开发者,都能从中学到实用…

    3天前
    00
  • 如何使用Python爬取BT种子资源并进行分析

    在数字时代,获取各种信息变得愈加便捷,但有时我们需要特定的数据或资源,而互联网上的BT种子资源是一种常见的需求。本教程将向您展示如何使用Python编写爬虫程序,以获取BT种子资源并进行基本的分析。无论是寻找…

    2023年11月26日
    00
  • 手把手教程:使用Python爬取Bilibili视频

    在现代社交媒体和视频分享平台的时代,Bilibili(哔哩哔哩)已经成为了许多人追逐知识、娱乐和创意的宝库。Bilibili上有各种各样的视频内容,从知识分享到娱乐节目,应有尽有。你可能会想,是否有一种方法可以将自…

    2023年12月26日
    00
  • 如何使用Python和Selenium爬取淘宝商品信息

    在数字化时代,电子商务已经成为我们购物的主要方式之一。淘宝作为中国最大的电子商务平台之一,拥有庞大的商品种类和丰富的商品信息。但是,如果你想要获取淘宝上的商品信息,手动复制粘贴可能会非常繁琐。因此,…

    2023年11月25日
    00