鱼C论坛

 找回密码
 立即注册
查看: 215|回复: 19

用python做一个爬古诗词代码

[复制链接]
回帖奖励 26 鱼币 回复本帖可获得 1 鱼币奖励! 每人限 1 次(中奖概率 70%)
发表于 2024-12-25 16:30:52 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大神们,怎么才能用爬虫爬古诗词?求解,有回报
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-12-25 16:31:02 | 显示全部楼层
要用Python编写一个简单的爬虫来抓取古诗词,你可以使用`requests`库来请求网页,以及`BeautifulSoup`库来解析HTML。以下是一个简单的例子,使用的是一个在线古诗词网站:
import requests
from bs4 import BeautifulSoup

def fetch_poems():
    url = "http://www.example-poetry-site.com"  # 请替换为真实的古诗词网站URL
    response = requests.get(url)
    response.encoding = 'utf-8'  # 根据网页具体的编码格式设置

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'html.parser')

        # 根据网站的具体结构来抓取诗词
        poems = soup.find_all('div', class_='poem')  # 假设诗词在<div class='poem'>标签里

        for poem in poems:
            title = poem.find('h1').get_text()
            content = poem.find('p').get_text()
            print(f"Title: {title}\nContent: {content}\n")
    else:
        print("Failed to retrieve the page.")

fetch_poems()

这个代码主要做了以下几个步骤:
1. 使用`requests.get`获取网页内容。
2. 使用`BeautifulSoup`解析HTML。
3. 查找所有指定标签(根据网站实际HTML结构调整查找条件)。
4. 打印标题和内容。

请注意:
- 确保目标网站允许爬虫访问。
- 根据实际网站结构修改代码。
- 安装需要的库:`pip install requests beautifulsoup4`。

如需更详细的帮助或代码优化,欢迎继续讨论!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 16:53:03 | 显示全部楼层
为什么显示没有requests这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 16:53:11 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 16:53
为什么显示没有requests这个


出现这种情况可能是因为你的Python环境中还没有安装`requests`库。你需要先安装这个库才能使用。下面是安装`requests`库的步骤:

1. 打开命令提示符(Windows)或终端(macOS/Linux)。
2. 输入以下命令并回车,以安装`requests`库:
pip install requests

3. 确保安装完成后,再运行你的Python脚本。

如果`pip install requests`命令也提示错误或找不到`pip`,你可能需要检查以下几点:

- 确认Python已经正确安装。
- 确保`pip`环境变量已设置。你可以尝试重新安装Python,通常会自动配置`pip`。
- 使用`python -m pip install requests`也可以执行安装。

安装完`requests`库后,再运行你的爬虫程序,应该就不会再出现类似问题了。如果还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 16:57:51 | 显示全部楼层
显示无法完成,会在管理员界面 pip install requests这个后不动
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 16:58:02 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 16:57
显示无法完成,会在管理员界面 pip install requests ...


如果在安装Python库时出现权限问题或者安装进程停滞,可以尝试以下方法:

1. **使用管理员权限运行命令提示符**:
   - 在Windows中,可以通过右击“命令提示符”选择“以管理员身份运行”。
   - 在管理员权限下再运行`pip install requests`。

2. **升级`pip`工具**:
   - 有时候,`pip`版本过旧可能导致问题,可以尝试升级`pip`:
python -m pip install --upgrade pip

3. **使用`python`命令执行**:
   - 如果直接使用`pip install`不成功,可以尝试:
python -m pip install requests

4. **检查网络连接**:
   - 有时安装过程可能受到网络问题影响,可以检查网络连接是否正常。
   - 如果有代理,可以设置环境变量`HTTP_PROXY`和`HTTPS_PROXY`。

5. **更换镜像源**:
   - 国内用户可以更换成国内镜像源,如阿里云或清华大学的镜像:
python -m pip install requests -i https://mirrors.aliyun.com/pypi/simple/

尝试以上方法解决安装问题。如果仍然无法解决,请提供更多信息以便进一步帮助。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 17:01:27 | 显示全部楼层
现在显示No module named 'bs4'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 17:01:32 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 17:01
现在显示No module named 'bs4'


出现“No module named 'bs4'”的提示是因为你的Python环境中还没有安装`BeautifulSoup4`库。你可以通过以下步骤来安装它:

1. 打开命令提示符(Windows)或终端(macOS/Linux)。

2. 输入以下命令并按回车键,以安装`BeautifulSoup4`库:
pip install beautifulsoup4

如果你在使用`pip install beautifulsoup4`时遇到了相同的问题,比如权限问题或者安装卡住,可以参考之前提到的解决方法:

- **使用管理员权限**:确保在管理员权限下运行命令提示符。
- **使用`python`命令执行**:尝试运行`python -m pip install beautifulsoup4`。

安装成功后,再次运行你的Python程序,应该不会再出现“No module named 'bs4'”错误。如果还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 17:02:20 | 显示全部楼层
现在是No module named 'pandas'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 17:02:27 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 17:02
现在是No module named 'pandas'


如果现在提示“No module named 'pandas'”,这意味着你的Python环境中还没有安装`pandas`库。`pandas`是一个常用的数据分析库,可以通过以下步骤安装:

1. 打开命令提示符(Windows)或终端(macOS/Linux)。

2. 输入以下命令并按回车键,以安装`pandas`库:
pip install pandas

如果在安装时遇到问题,可以尝试以下方法:

- **使用管理员权限**:确保在管理员权限下运行命令提示符。
- **使用`python`命令执行**:尝试运行以下命令:
python -m pip install pandas
- **更换镜像源**:如果网络原因导致安装缓慢或失败,可以更换镜像源:
python -m pip install pandas -i https://mirrors.aliyun.com/pypi/simple/

安装成功后,再次运行你的Python程序,应该不会再出现“No module named 'pandas'”错误。如果还有其他问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 17:04:19 | 显示全部楼层
在下载pip install pandas这个时显示WARNING: You are using pip version 21.2.4; however, version 24.3.1 is available.
You should consider upgrading via the 'C:\Users\HP\AppData\Local\Programs\Python\Python310\python.exe -m pip install --upgrade pip' command.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 17:04:26 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 17:04
在下载pip install pandas这个时显示WARNING: You are ...


这个警告信息表示你的`pip`版本已经过期,并且有新版本可用。虽然旧版本的`pip`通常仍然可以正常使用,但升级`pip`可以提高可靠性和兼容性。你可以通过以下步骤来升级你的`pip`版本:

1. 打开命令提示符(Windows)或终端(macOS/Linux)。

2. 输入以下命令并按下回车键,以升级`pip`:
python -m pip install --upgrade pip

完成升级后,`pip`将更新到最新版本。完成升级后,你可以继续尝试安装`pandas`或者其他库。

如果你已经成功安装了`pandas`,理论上你可以忽略这个警告,但建议还是尽可能保持工具链的更新以获得最佳的使用体验。

如果在升级或安装过程中遇到其他问题,欢迎随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-12-25 17:08:32 | 显示全部楼层
现在显示 WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ConnectTimeoutError(<pip._vendor.urllib3.connection.HTTPSConnection object at 0x000001C3A82A6230>, 'Connection to files.pythonhosted.org timed out. (connect timeout=15)')': /packages/ef/7d/500c9ad20238fcfcb4cb9243eede163594d7020ce87bd9610c9e02771876/pip-24.3.1-py3-none-any.whl
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 17:08:43 | 显示全部楼层
岁月如此这般 发表于 2024-12-25 17:08
现在显示 WARNING: Retrying (Retry(total=4, connect ...


这个错误提示说明在连接到`files.pythonhosted.org`时出现了超时的问题。这通常是由于网络连接不稳定或访问受限导致的。你可以尝试以下方法解决问题:

1. **更换网络环境**:
   - 尝试在不同的网络环境下重新执行安装命令,比如更稳定的WiFi连接或有线网络。

2. **使用国内镜像源**:
   - 由于网络问题,使用国内的镜像源可能会更稳定和快速。可以使用以下命令安装或升级`pip`:
python -m pip install --upgrade pip -i https://mirrors.aliyun.com/pypi/simple/

3. **增加超时时间**:
   - 可以通过增加超时时间来避免短时间的网络波动导致的安装失败。例如:
python -m pip install pandas --timeout=60

4. **手动下载并安装**:
   - 如果依然失败,可以尝试手动下载`whl`文件,然后使用`pip`进行本地安装。可以从 [Python Package Index](https://pypi.org/) 找到你需要的包,下载后使用下面的命令安装:
python -m pip install path_to_downloaded_file.whl

尝试这些方法后,如果仍然遇到问题,请提供更多详细信息,以便进一步帮助你解决问题。如果成功解决或有新的问题,欢迎继续提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-25 18:58:39 | 显示全部楼层

回帖奖励 +1 鱼币

可以私信我
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-26 01:50:27 From FishC Mobile | 显示全部楼层

回帖奖励 +1 鱼币

(*`*)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-27 08:10:39 | 显示全部楼层

回帖奖励 +1 鱼币

应该明确一下,从哪里爬
不同的网站,
对爬虫态度不同
数据结构也不同
导致需要import的东西都不一样

当前这个需求太泛泛了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-12-30 08:06:11 | 显示全部楼层
import re
import requests
from bs4 import BeautifulSoup
from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED

# 爬取的诗歌网址
urls = ['https://so.gushiwen.cn/shiwens/default.aspx?astr=%e6%9d%8e%e7%99%bd']

poem_links = []
# 诗歌的网址
for url in urls:
    # 请求头部
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}
    req = requests.get(url, headers=headers)

    soup = BeautifulSoup(req.text, "lxml")
    content = soup.find_all('div', class_="sons")[0]
    links = content.find_all('a')

    for link in links:
        poem_links.append('https://so.gushiwen.org'+link['href'])

poem_list = []
# 爬取诗歌页面
def get_poem(url):
    #url = 'https://so.gushiwen.org/shiwenv_45c396367f59.aspx'
    # 请求头部
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.87 Safari/537.36'}
    req = requests.get(url, headers=headers)
    soup = BeautifulSoup(req.text, "lxml")
    poem = soup.find('div', class_='contson').text.strip()
    poem = poem.replace(' ', '')
    poem = re.sub(re.compile(r"\([\s\S]*?\)"), '', poem)
    poem = re.sub(re.compile(r"([\s\S]*?)"), '', poem)
    poem = re.sub(re.compile(r"。\([\s\S]*?)"), '', poem)
    poem = poem.replace('!', '!').replace('?', '?')
    poem_list.append(poem)

# 利用并发爬取
executor = ThreadPoolExecutor(max_workers=10)  # 可以自己调整max_workers,即线程的个数
# submit()的参数: 第一个为函数, 之后为该函数的传入参数,允许有多个
future_tasks = [executor.submit(get_poem, url) for url in poem_links]
# 等待所有的线程完成,才进入后续的执行
wait(future_tasks, return_when=ALL_COMPLETED)

# 将爬取的诗句写入txt文件
poems = list(set(poem_list))
poems = sorted(poems, key=lambda x:len(x))
for poem in poems:
    poem = poem.replace('《','').replace('》','') \
               .replace(':', '').replace('“', '')
    print(poem)
    with open('F://poem.txt', 'a') as f:
        f.write(poem)
        f.write('\n')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 6 天前 | 显示全部楼层

回帖奖励 +1 鱼币

6
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 4 天前 | 显示全部楼层
666
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-24 02:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表