ssqchina 发表于 2023-7-20 14:19:25

保存本地的html文件如何提取纯文本

本帖最后由 ssqchina 于 2023-7-20 14:21 编辑

这是提取网址的,本地的html文件该如何修改

import requests
from bs4 import BeautifulSoup

url = "https://www.baidu.com/"
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

# kill all script and style elements
for script in soup(["script", "style"]):
    script.extract()    # rip it out

# get text
text = soup.get_text()

# break into lines and remove leading and trailing space on each
lines = (line.strip() for line in text.splitlines())
# break multi-headlines into a line each
chunks = (phrase.strip() for line in lines for phrase in line.split(""))
# drop blank lines
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)

歌者文明清理员 发表于 2023-7-20 14:19:31

本帖最后由 歌者文明清理员 于 2023-7-20 14:20 编辑

这段代码使用Python爬取指定网页(https://www.baidu.com/)的内容,并保存为纯文本格式。
首先,通过requests库发送HTTP请求获取网页的HTML源代码。然后,使用BeautifulSoup库解析HTML,并移除其中的脚本和样式元素。
接下来,从解析后的HTML中提取文本内容。将文本按行分割,并去除每行首尾的空白字符。然后,将多行文本拆分为单行,并去除每行首尾的空白字符。最后,将非空的行连接起来,并打印输出。
若你想将文本保存到本地文件,可以添加以下代码:
with open('output.txt', 'w', encoding='utf-8') as f:
    f.write(text)

注意,需要确保代码所在的目录下可写入文件。


为什么不给我设置一个最佳答案呢?点它 -> https://i.imgtg.com/2023/06/18/OTpTnF.png

陶远航 发表于 2023-7-20 14:19:35

你好!根据你提供的代码,你想要从百度网页中获取文本内容并保存为本地的HTML文件。以下是修改后的代码示例:

import requests
from bs4 import BeautifulSoup

url = "https://www.baidu.com/"
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser')

# 保存html文件
with open("baidu.html", "w", encoding="utf-8") as file:
    file.write(str(soup))

print("保存成功!")


这段代码使用requests库获取网页内容,然后使用BeautifulSoup库解析网页。最后,将解析后的内容写入名为"baidu.html"的本地文件中。

希望能帮到你!如果还有其他问题,请随时提问。

Mike_python小 发表于 2023-7-20 14:19:43

问题分析:

根据提供的代码,您想要通过请求百度网址并将网页内容保存为纯文本。然而,在代码中存在一些排版和处理文本的问题。

1. 去除 script 和 style 标签:代码通过遍历 soup 对象中的 script 和 style 标签,并使用 extract() 方法删除这些标签。这是正确的做法。

2. 获取网页文本:代码通过 get_text() 方法获取网页的文本内容,这是正确的做法。

3. 处理文本:代码中使用了一系列操作来对文本进行处理。然而,其中的代码缩进似乎有问题,导致解析出来的文本可能会出现错误。

修正后的代码如下:


import requests
from bs4 import BeautifulSoup

url = "https://www.baidu.com/"
soup = BeautifulSoup(requests.get(url).content, 'html.parser')

# Kill all script and style elements
for script in soup(["script", "style"]):
    script.extract()# Rip it out

# Get text
text = soup.get_text()

# Remove leading and trailing spaces on each line
lines = (line.strip() for line in text.splitlines())

# Break multi-headlines into a line each
chunks = (phrase.strip() for line in lines for phrase in line.split(""))

# Drop blank lines
text = '\n'.join(chunk for chunk in chunks if chunk)

print(text)


请注意,以上代码修正了排版问题,并确保文本处理的逻辑正确。您可以在本地运行修正后的代码,验证文本内容是否符合预期。

此外,在保存文本之前,您可能希望对文本进行进一步的处理,例如去除多余的空行、特殊字符等。根据您的需求,可以根据文本处理的目标进行相应的修改。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-7-20 14:19:46

您的代码看起来可以成功地从HTML中提取文本。但是,如果你想保存HTML而不是仅仅提取文本,你可以按照以下方式进行:

import requests

url = "https://www.baidu.com/"
response = requests.get(url)

# 确保请求成功
response.raise_for_status()

# 打开一个文件用来写入HTML内容
with open("baidu.html", "w", encoding="utf-8") as f:
    f.write(response.text)


这段代码会将百度主页的HTML内容保存到"baidu.html"这个文件中。具体流程如下:

1. 我们首先导入 requests 模块,这是Python中用于发送HTTP请求的模块。
2. 然后,我们使用 requests.get(url) 方法向指定的URL发送GET请求。这会返回一个 Response 对象,其中包含了服务器对我们请求的响应。
3. 接着,我们使用 Response 对象的 raise_for_status() 方法检查请求是否成功。如果请求失败(例如,服务器返回了404 Not Found状态码),那么这个方法会引发一个异常。
4. 最后,我们创建一个名为"baidu.html"的文件,并以写入模式打开它。我们将响应的文本内容(即HTML)写入这个文件。

需要注意的是,这个过程中并没有使用BeautifulSoup进行解析HTML。因为如果你的目标是保存整个HTML文件,而不是解析或者操作HTML内容,那么就无需使用BeautifulSoup。

歌者文明清理员 发表于 2023-7-20 14:20:52

陶远航 发表于 2023-7-20 14:19
你好!根据你提供的代码,你想要从百度网页中获取文本内容并保存为本地的HTML文件。以下是修改后的代码示例 ...

我比你快!

陶远航 发表于 2023-7-20 14:21:27

歌者文明清理员 发表于 2023-7-20 14:20
我比你快!

你占楼,你牛逼,你selenium

ssqchina 发表于 2023-7-20 14:24:50

歌者文明清理员 发表于 2023-7-20 14:19
这段代码使用Python爬取指定网页(https://www.baidu.com/)的内容,并保存为纯文本格式。
首先,通过requ ...

这是提取网址的,本地的html文件该如何修改

ssqchina 发表于 2023-7-20 14:25:09

陶远航 发表于 2023-7-20 14:19
你好!根据你提供的代码,你想要从百度网页中获取文本内容并保存为本地的HTML文件。以下是修改后的代码示例 ...

这是提取网址的,本地的html文件该如何修改!

ssqchina 发表于 2023-7-20 14:25:48

Mike_python小 发表于 2023-7-20 14:19
问题分析:

根据提供的代码,您想要通过请求百度网址并将网页内容保存为纯文本。然而,在代码中存在一些排 ...

这是提取网址的,本地的html文件该如何修改!!

ssqchina 发表于 2023-7-20 14:26:24

isdkz 发表于 2023-7-20 14:19
您的代码看起来可以成功地从HTML中提取文本。但是,如果你想保存HTML而不是仅仅提取文本,你可以按照以下方 ...

这是提取网址的,本地的html文件该如何修改!!!!!

歌者文明清理员 发表于 2023-7-20 14:27:48

ssqchina 发表于 2023-7-20 14:24
这是提取网址的,本地的html文件该如何修改

from bs4 import BeautifulSoup
with open("your_file.html", "r") as f:
    content = f.read()
soup = BeautifulSoup(content, "html.parser")
print(soup.text)

ssqchina 发表于 2023-7-20 14:35:11

歌者文明清理员 发表于 2023-7-20 14:27


from bs4 import BeautifulSoup
with open("f:\\456.html", "r") as f:
    content = f.read()
soup = BeautifulSoup(content, "html.parser")
print(soup.text)
错误信息
Traceback (most recent call last):
File "D:\Python\111.py", line 3, in <module>
    content = f.read()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xa5 in position 60: illegal multibyte sequence

歌者文明清理员 发表于 2023-7-20 14:37:55

ssqchina 发表于 2023-7-20 14:35
from bs4 import BeautifulSoup
with open("f:\\456.html", "r") as f:
    content = f.read()


from bs4 import BeautifulSoup
with open("f:\\456.html", "r", encoding="utf-8") as f:
    content = f.read()
soup = BeautifulSoup(content, "html.parser")
print(soup.text)
sorry,没考虑编码

sfqxx 发表于 2023-7-20 15:52:17

歌者文明清理员 发表于 2023-7-20 14:19
这段代码使用Python爬取指定网页(https://www.baidu.com/)的内容,并保存为纯文本格式。
首先,通过requ ...

《反对自己》

歌者文明清理员 发表于 2023-7-20 17:48:10

sfqxx 发表于 2023-7-20 15:52
《反对自己》

wc
页: [1]
查看完整版本: 保存本地的html文件如何提取纯文本