# 导入requests库,用于发送HTTP请求
import requests as req
# 导入BeautifulSoup库,用于解析HTML文本
from bs4 import BeautifulSoup
# 导入re库,用于正则表达式匹配
import re
# 定义changeurl函数,用于改变给定的URL
def changeurl(i, url):
# 保存原始URL
url1 = url
# 将传入的整数i转换为字符串
i = str(i)
# 构造新的路径,将整数转换为字符串,然后添加".html"
path = i + "." + "html"
# 将新的路径添加到原始URL后面,形成新的URL
url2 = url1 + path
# 打印新的URL
print(url2)
# 返回新的URL
return url2
# 定义gethtml函数,用于获取给定URL的HTML文本
def gethtml(url):
# 定义请求头,使用Mozilla/5.0用户代理,使服务器认为这是一个浏览器请求
headers = {
"User-Agent": 'Mozilla/5.0'
}
# 发送GET请求到给定的URL,并设置请求头,设置超时时间为30秒
r = req.get(url, headers=headers, timeout=30)
# 检查是否有连接错误,如果有则抛出异常
r.raise_for_status() # cope with connection errors
# 返回响应的文本内容
return r.text
# 定义filehtml函数,用于解析HTML文本,找到id为"chaptercontent"的元素,并提取其中的中文文本
def filehtml(html):
# 使用BeautifulSoup解析HTML文本
soup = BeautifulSoup(html, "lxml")
# 找到id为"chaptercontent"的元素
data1 = soup.find_all(id="chaptercontent")
# 初始化一个空列表,用于保存提取的中文文本
result = []
# 遍历找到的元素
for child in data1:
# 使用正则表达式找到所有的中文字符串,并将其添加到结果列表中
result.extend(re.findall(r'[\u4e00-\u9fa5]+', child.text))
# 返回提取的中文字符串列表
return result
# 定义printhtml函数,用于打印提取的中文字符串列表
def printhtml(text):
# 遍历列表中的每个元素
for u in text:
# 将每个元素转换为字符串,并在后面添加逗号,然后打印出来
u = u + ","
print(u, end=" ")
# 打印一个换行符
print()
# 定义keeptext函数,用于将提取的中文字符串列表保存到文件中,并打印"保存成功"的消息
def keeptext(text):
# 以追加模式打开一个名为"output.txt"的文件,使用utf-8编码
with open("output.txt", "a", encoding='utf-8') as f:
# 遍历提取的中文字符串列表中的每个元素
for u in text:
# 将每个元素写入文件,并在后面添加逗号,如果该元素的长度大于10,则添加换行符
f.write(u + ",")
if len(u) > 10:
f.write("\n")
# 打印"保存成功"的消息
print("保存成功")
# 返回1,表示保存操作成功完成
a = 1
return a
# 定义main函数,作为程序的入口点
def main():
# 设置初始URL为""
url = "/"
# 从给定的URL获取HTML文本
html = gethtml(url)
# 从HTML文本中提取中文字符串列表,并将结果保存到变量text中
text = filehtml(html)
# 打印提取的中文字符串列表,每个元素以逗号分隔,打印一个换行符作为分隔符(仅为了显示方便)
printhtml(text)
# 将提取的中文字符串列表保存到文件"output.txt"中,并打印"保存成功"的消息(仅为了显示操作结果)
a = keeptext(text)
main()
本文中,我们将介绍如何使用Python的requests和BeautifulSoup库从网页中抓取中文文本。我们将通过一个具体的示例来展示这个过程,该示例将从"https://m.bqgbi.com/book/。
首先,我们需要了解这个网页的结构。在这个示例中,我们关注的是id为"chaptercontent"的HTML元素,它包含了我们要抓取的中文文本。
我们使用requests库发送HTTP GET请求来获取网页的HTML文本,然后使用BeautifulSoup库来解析HTML并找到我们感兴趣的元素。BeautifulSoup库能够将复杂的HTML树结构转化为简单易用的Python对象,使我们能够轻松地找到并提取我们需要的元素。
在找到需要的元素后,我们使用正则表达式来从其文本中提取所有的中文字符串。这些字符串被保存在一个列表中,然后我们可以通过在控制台上打印或保存到文件中等方式来查看或处理这些字符串。
最后,我们在一个循环中重复以上步骤,从一个到另一个网页,从而抓取更多的中文文本。
这个过程可能不是完美的,因为不同的网页可能会有不同的结构和样式。但是,通过使用Python的requests和BeautifulSoup库,我们可以轻松地处理大多数的网页,并从中抓取我们需要的中文文本。