毎日の記事をクロールして Word 文書に保存するためのチュートリアル
このチュートリアルでは、Python クローラー テクノロジを使用して Daily Yiwen Web サイト (https://meiriyiwen.com/random) から記事をクロールし、Word 文書に保存します。次のトピックについて説明します: HTTP リクエスト、HTML 解析、データ抽出、BeautifulSoup ライブラリを使用した Web ページ解析。
1.HTTPリクエスト
まず、HTTP リクエストを送信して、ターゲット ページのコンテンツを取得する必要があります。requests
モジュール内のメソッドを使用してget()
GET リクエストを送信し、取得した内容を出力します。
import requests
# 发送 HTTP GET 请求
response = requests.get('https://meiriyiwen.com/random')
# 解码响应内容
decoded_content = response.content.decode('utf-8')
# 打印观察获取的内容
print(decoded_content)
2. HTMLの解析
取得した HTML コンテンツを解析して必要なデータを抽出する必要があります。これを行うには、BeautifulSoup
HTML 解析用のライブラリを使用し、解析されたコンテンツを印刷して観察します。
import requests
from bs4 import BeautifulSoup
# 发送 HTTP GET 请求
response = requests.get('https://meiriyiwen.com/random')
# 解码响应内容
decoded_content = response.content.decode('utf-8')
# 使用 BeautifulSoup 解析 HTML 内容
soup = BeautifulSoup(decoded_content, 'html.parser')
# 打印观察解析后的内容
print(soup.prettify()) # 输出格式化后的前 500 个字符,方便观察
3. データ抽出
これで、HTML 構造に基づいて必要なデータを抽出できるようになりました。私たちの目標は、記事のタイトル、著者、内容を抽出することです。
# 提取文章标题
title = soup.find('h1').text.strip()
# 提取文章作者
author = soup.find('p', class_='article_author').text.strip()
# 提取文章内容
content_tags = soup.find('div', class_='article_text').find_all('p')
content = '\n'.join([tag.text.strip() for tag in content_tags])
4. Word文書に保存
記事を Word 文書に保存するには、python-docx
ライブラリのクラスを使用しますDocument
。空の Word 文書を作成し、タイトル、作成者、内容を追加して、.docx
ファイルとして保存します。
from docx import Document
# 创建 Word 文档
document = Document()
# 添加标题
document.add_heading(title, level=1)
# 添加作者
document.add_paragraph('作者: ' + author)
# 添加内容
document.add_paragraph(content)
# 保存 Word 文档
doc_file_name = title + '.docx'
document.save(doc_file_name)
# 输出保存成功的提示信息
print("文件保存成功:" + doc_file_name)
完全なコード
import requests # 导入 requests 模块,用于发送 HTTP 请求和获取网页内容
from bs4 import BeautifulSoup # 导入 BeautifulSoup 模块,用于解析 HTML 内容
from docx import Document # 导入 Document 类,用于创建和编辑 Word 文档
# 发送请求并获取网页内容
response = requests.get('https://meiriyiwen.com/')
response.raise_for_status() # 检查是否请求成功
html_content = response.content # 获取网页内容的二进制数据
# 解析 HTML 内容
soup = BeautifulSoup(html_content, 'html.parser') # 使用 BeautifulSoup 解析 HTML 内容
# 提取文章标题、作者和内容
title = soup.find('h1').text.strip() # 提取文章标题,使用 strip() 方法去除标题两边的空白字符
author = soup.find('p', class_='article_author').text.strip() # 提取文章作者
content_tags = soup.find('div', class_='article_text').find_all('p') # 提取文章内容的所有 <p> 标签
content = '\n'.join([tag.text.strip() for tag in content_tags]) # 将内容的所有段落文本拼接在一起,使用换行符分隔
# 创建 Word 文档
document = Document() # 创建一个空的 Word 文档
# 添加标题
document.add_heading(title, level=1) # 添加文章标题,设置标题级别为 1
# 添加作者
document.add_paragraph('作者: ' + author) # 添加作者信息
# 添加内容
document.add_paragraph(content) # 添加文章内容
# 保存 Word 文档
doc_file_name = title + '.docx' # 设置 Word 文档的文件名,使用文章标题作为文件名
document.save(doc_file_name) # 保存 Word 文档到指定文件名
# 输出保存成功的提示信息
print("文件保存成功:" + doc_file_name) # 打印保存成功的提示信息,包含文件名