当前位置: 首页 > news >正文

【数据清洗与预处理】-文本采集与处理

1.从pdf中提取文本信息

下面是一个Python案例,展示如何将PDF文件中的信息转换为可读取的数据。这个示例使用了PyPDF2库来读取PDF文件内容。

案例:从PDF文件提取文本

环境准备
首先,确保你已经安装了PyPDF2库。可以使用以下命令进行安装:

pip install PyPDF2

示例代码

import PyPDF2def extract_text_from_pdf(pdf_file_path):# 打开PDF文件with open(pdf_file_path, 'rb') as file:# 创建PDF阅读器对象pdf_reader = PyPDF2.PdfReader(file)# 提取每一页的文本text = ""for page in pdf_reader.pages:text += page.extract_text() + "\n"  # 将每页文本连接return textif __name__ == "__main__":pdf_path = 'example.pdf'  # 替换为你的PDF文件路径extracted_text = extract_text_from_pdf(pdf_path)# 打印提取的文本print("提取的文本内容:")print(extracted_text)

代码说明
1.导入库:导入PyPDF2库以处理PDF文件。
2.函数定义:定义extract_text_from_pdf函数,接收PDF文件路径作为参数。
3.打开文件:使用with open()打开PDF文件。
4.创建PDF阅读器:使用PdfReader创建一个PDF阅读器对象。
5.提取文本:遍历每一页,使用extract_text()方法提取文本,并将其连接。
6.返回结果:函数返回提取的文本。
7.主程序:在主程序中调用该函数并打印提取的文本。
使用方法
将上面的代码保存到一个Python文件中,确保将pdf_path变量中的路径替换为你要处理的PDF文件路径。运行该程序后,它将提取并打印PDF文件中的文本内容。

2.将pdf中的文字和图片分开获取

如果PDF文件包含空白和图片,解析内容的难度会增加。在这种情况下,可以使用pdfplumber库,这个库可以更好地处理复杂的PDF结构,并提取文本、表格等内容。
案例:使用pdfplumber提取PDF内容
环境准备
首先,确保你已经安装了pdfplumber库。可以使用以下命令进行安装:

pip install pdfplumber

示例代码

import pdfplumberdef extract_text_and_images_from_pdf(pdf_file_path):text = ""images = []# 打开PDF文件with pdfplumber.open(pdf_file_path) as pdf:for page in pdf.pages:# 提取文本text += page.extract_text() or ""  # 避免空文本的连接# 提取图片for img in page.images:img_data = page.within_bbox(img['doctop'], img['doctop'] + img['height'], img['x0'], img['x1'])images.append(img_data)return text, imagesif __name__ == "__main__":pdf_path = 'example.pdf'  # 替换为你的PDF文件路径extracted_text, extracted_images = extract_text_and_images_from_pdf(pdf_path)# 打印提取的文本内容print("提取的文本内容:")print(extracted_text)# 打印提取的图片数量print(f"提取的图片数量:{len(extracted_images)}")

代码说明
1.导入库:导入pdfplumber库。
2.函数定义:定义extract_text_and_images_from_pdf函数,接收PDF文件路径作为参数。
3.打开文件:使用pdfplumber.open()打开PDF文件。
4.提取文本:使用extract_text()方法提取文本。
5.提取图片:使用page.images获取每页的图片信息,并将其存储在images列表中。
6.返回结果:函数返回提取的文本和图片。
7.主程序:在主程序中调用该函数并打印提取的文本和图片数量。
使用方法
将上面的代码保存到一个Python文件中,确保将pdf_path变量中的路径替换为你要处理的PDF文件路径。运行该程序后,它将提取并打印PDF文件中的文本内容和图片数量。
注意事项

  • 如果PDF中的文本提取不完整,可能需要调整extract_text()方法的参数,或者使用OCR技术(如pytesseract)来处理扫
  • 在这行代码中:
    img_data = page.within_bbox(img[‘doctop’], img[‘doctop’] + img[‘height’], img[‘x0’], img[‘x1’])
    我们使用了pdfplumber库的within_bbox方法,该方法可以根据给定的边界框(bounding box)来裁剪页面的内容。具体来说:
  • img[‘doctop’]:表示图片在页面上的上边界(y坐标)。
  • img[‘doctop’] + img[‘height’]:表示图片在页面上的下边界(y坐标),通过在上边界上加上图片的高度来计算。
  • img[‘x0’]:表示图片在页面上的左边界(x坐标)。
  • img[‘x1’]:表示图片在页面上的右边界(x坐标)。
    这四个参数共同定义了一个矩形区域,表示该图片在页面上的位置和大小。within_bbox方法会返回该区域内的内容(文本或其他元素)。
    详细解释
  • 边界框(Bounding Box):一个矩形区域,通常由左上角和右下角的坐标定义。在PDF处理和图像处理时,边界框用于确定感兴趣区域。
  • img[‘doctop’] 和 img[‘height’]:这两个值组合在一起定义了图片的上下边界。
  • img[‘x0’] 和 img[‘x1’]:这两个值定义了图片的左右边界。
    这个方法的主要目的是获取该图片对应的页面部分的内容,便于进一步处理或保存。如果只想提取图片,可以直接使用img对象的相关属性进行处理,而不需要调用within_bbox。描的PDF。
  • 提取的图片将是图片信息,若需要进一步处理图片内容,可以考虑使用PIL或OpenCV等库。

3.将pdf转换成html文件

在Windows环境下,将PDF转换为HTML可以按照以下步骤操作:
步骤1:安装pdf2htmlEX
1.下载
pdf2htmlEX:

  • 访问pdf2htmlEX的GitHub页面
  • 找到最新版本,下载适合Windows的安装包(通常为.zip文件)。

2.解压缩文件

  • 将下载的.zip文件解压缩到你选择的文件夹(例如C:\pdf2htmlEX)。

3.配置环境变量

  • 找到解压后的pdf2htmlEX.exe文件所在的目录。
  • 右键“此电脑”或“计算机”,选择“属性”。
  • 点击“高级系统设置”,然后选择“环境变量”。
  • 在“系统变量”中,找到Path变量,选择并点击“编辑”。
  • 在新打开的窗口中,点击“新建”,添加pdf2htmlEX.exe所在的目录(如C:\pdf2htmlEX)。
  • 确认所有窗口以保存更改。

步骤2:准备Python脚本
1.确保安装Python

  • 如果尚未安装Python,可以从Python官网

2.安装所需的Python库

  • 在命令提示符中运行以下命令,确保你有os模块(Python自带):
pip install pdf2htmlEX

3.创建转换脚本

  • 打开文本编辑器(如Notepad)并复制以下代码:
import osdef convert_pdf_to_html(pdf_file_path, output_html_path):# 构建命令行指令command = f"pdf2htmlEX --dest-dir={os.path.dirname(output_html_path)} {pdf_file_path} {output_html_path}"# 执行命令os.system(command)if __name__ == "__main__":pdf_path = 'C:\\path\\to\\your\\example.pdf'  # 替换为你的PDF文件路径output_html = 'C:\\path\\to\\your\\output.html'  # 输出的HTML文件路径convert_pdf_to_html(pdf_path, output_html)print(f"PDF文件已成功转换为HTML:{output_html}")
  • 保存为convert_pdf.py,并将pdf_path和output_html替换为实际路径。

步骤3:运行Python脚本
1.打开命令提示符

  • 按Win + R,输入cmd,然后按Enter。

2.导航到脚本所在目录

  • 使用cd命令导航到存储convert_pdf.py的文件夹。例如:
cd C:\path\to\your\script

3.运行脚本

python convert_pdf.py

步骤4:检查输出

  • 脚本运行后,输出的HTML文件将保存在你指定的路径中。可以用浏览器打开查看转换效果。

4.解析html文件

下面是一个简单的Python案例,展示如何解析HTML文件内容。我们将使用BeautifulSoup库,这是一种常用的HTML和XML解析库,适合从网页中提取数据。

案例:解析HTML文件内容

环境准备
首先,确保你已经安装了BeautifulSoup和requests库。可以使用以下命令进行安装:

pip install beautifulsoup4 requests

示例代码
下面的示例代码将读取一个HTML文件,解析其中的内容,并提取特定的元素。

from bs4 import BeautifulSoupdef parse_html_file(html_file_path):# 打开并读取HTML文件with open(html_file_path, 'r', encoding='utf-8') as file:content = file.read()# 使用BeautifulSoup解析HTML内容soup = BeautifulSoup(content, 'html.parser')# 提取标题title = soup.title.stringprint(f"页面标题: {title}")# 提取所有段落paragraphs = soup.find_all('p')  # 查找所有<p>标签for i, p in enumerate(paragraphs, start=1):print(f"段落 {i}: {p.get_text()}")  # 获取每个段落的文本内容if __name__ == "__main__":html_path = 'example.html'  # 替换为你的HTML文件路径parse_html_file(html_path)

代码说明
1.导入库

from bs4 import BeautifulSoup
  • 导入BeautifulSoup库以解析HTML文件。

2.函数定义

def parse_html_file(html_file_path):
  • 定义parse_html_file函数,接收HTML文件路径作为参数。

3.打开并读取HTML文件

with open(html_file_path, 'r', encoding='utf-8') as file:content = file.read()
  • 使用with open()打开HTML文件,并读取其内容。

4.解析HTML内容

soup = BeautifulSoup(content, 'html.parser')
  • 使用BeautifulSoup解析读取的HTML内容。

5.提取标题

title = soup.title.string
print(f"页面标题: {title}")
  • 使用soup.title获取页面的标题,并打印。

6.提取所有段落

paragraphs = soup.find_all('p')  # 查找所有<p>标签
for i, p in enumerate(paragraphs, start=1):print(f"段落 {i}: {p.get_text()}")
  • 使用find_all(‘p’)方法查找所有段落(

    标签),并逐一打印每个段落的文本内容。

7.主程序

if __name__ == "__main__":html_path = 'example.html'  # 替换为你的HTML文件路径parse_html_file(html_path)
  • 在主程序中调用解析函数。

使用方法
1.将上面的代码保存为Python文件(如
parse_html.py)。
2.将要解析的HTML文件放在与代码相同的目录中,或在
html_path中指定正确的路径。
3.运行该程序:
python parse_html.py

运行后,程序将打印出HTML文件的标题和所有段落的内容。你可以根据需求修改代码,以提取其他元素或属性。

5.网页爬虫

下面是一个使用Python编写的简单网页爬虫示例,使用requests库获取网页内容,并使用BeautifulSoup解析HTML。这个爬虫会抓取网页的标题和所有段落内容。

示例代码:基本网页爬虫

环境准备
确保你已经安装了requests和BeautifulSoup库。如果没有,可以使用以下命令进行安装:

pip install requests beautifulsoup4

爬虫代码

import requests
from bs4 import BeautifulSoupdef crawl_webpage(url):try:# 发送GET请求response = requests.get(url)response.raise_for_status()  # 检查请求是否成功# 解析HTML内容soup = BeautifulSoup(response.text, 'html.parser')# 提取页面标题title = soup.title.string if soup.title else '无标题'print(f"页面标题: {title}")# 提取所有段落paragraphs = soup.find_all('p')  # 查找所有<p>标签for i, p in enumerate(paragraphs, start=1):print(f"段落 {i}: {p.get_text()}")  # 获取每个段落的文本内容except requests.exceptions.RequestException as e:print(f"请求发生错误: {e}")if __name__ == "__main__":url = 'https://example.com'  # 替换为你要爬取的网址crawl_webpage(url)

代码说明
1.导入库

import requests
from bs4 import BeautifulSoup
  • 导入requests库用于发送HTTP请求,导入BeautifulSoup用于解析HTML。

2.定义爬虫函数

def crawl_webpage(url):
  • 定义crawl_webpage函数,接收一个URL作为参数。

3.发送请求

response = requests.get(url)
response.raise_for_status()  # 检查请求是否成功
  • 使用requests.get()发送GET请求。如果请求失败,将抛出异常。

4.解析HTML内容

soup = BeautifulSoup(response.text, 'html.parser')
  • 使用BeautifulSoup解析获取的网页内容。

5.提取标题

title = soup.title.string if soup.title else '无标题'
print(f"页面标题: {title}")
  • 获取页面的标题,若无标题则返回"无标题"。

6.提取段落内容

paragraphs = soup.find_all('p')
for i, p in enumerate(paragraphs, start=1):print(f"段落 {i}: {p.get_text()}")
  • 查找所有段落(

    标签),并逐一打印其文本内容。

7.异常处理

except requests.exceptions.RequestException as e:print(f"请求发生错误: {e}")
  • 捕获请求异常并打印错误信息。

8.主程序

if __name__ == "__main__":url = 'https://example.com'  # 替换为你要爬取的网址crawl_webpage(url)
  • 在主程序中调用爬虫函数,指定要爬取的网页地址。

使用方法
1.将上面的代码保存为Python文件(如
web_crawler.py)。
2.替换
url变量中的网址为你想爬取的网页地址。
3.运行该程序:
python web_crawler.py

程序将打印出网页的标题和所有段落的内容。你可以根据需求修改代码以提取其他元素或数据。

http://www.lryc.cn/news/578133.html

相关文章:

  • LoRA 问答微调与部署全流程:基于 LLaMA-Factory + DeepSeek + FastAPI 打造专属大模型
  • Hive SQL 实战:电商销售数据分析全流程案例
  • 大数据轻量化流批一体架构探索实践(一)
  • 【数据分析】环境数据降维与聚类分析教程:从PCA到可视化
  • [特殊字符]【联邦学习实战】用 PyTorch 从 0 搭建一个最简单的联邦学习系统(含完整代码)
  • ubuntu下免sudo执行docker
  • spring-ai-alibaba官方 Playground 示例
  • 根据OS自动加载不同的native库和本地jar包
  • Ollama 深度使用指南:在本地玩转大型语言模型
  • 关于Spring的那点事(1)
  • AIGC检测系统升级后的AI内容识别机制与系统性降重策略研究(三阶段降重法)
  • 04_MySQL 通过 Docker 在同一个服务器上搭建主从集群(一主一从)
  • Junit_注解_枚举
  • 【区块链安全】代理合约中的漏洞
  • 【C++指南】C++ list容器完全解读(三):list迭代器的实现与优化
  • 【软考高项论文】论信息系统项目的成本管理
  • 渗透测试的重要性及最佳实践
  • 对selenium进行浏览器和驱动进行配置Windows | Linux
  • 调试W5500(作为服务器)
  • 淘宝API接口在数据分析中的应用
  • 非常详细版: dd.device.geolocation 钉钉微应用获取定位,移动端 PC端都操作,Vue实现钉钉微应用获取精准定位并渲染在地图组件上
  • 如何解决 Rider 编译输出乱码
  • leetcode:693. 交替位二进制数(数学相关算法题,python3解法)
  • Deepoc 大模型:无人机行业的智能变革引擎
  • Linux进程单例模式运行
  • 【AI News | 20250630】每日AI进展
  • 华为云Flexus+DeepSeek征文 | 从零开始搭建Dify-LLM应用开发平台:华为云全流程单机部署实战教程
  • 本地部署kafka4.0
  • Serverless 架构入门与实战:AWS Lambda、Azure Functions、Cloudflare Workers 对比
  • 打卡day58