爬虫获取唐诗三百首页面上唐诗数量
时间: 2023-10-13 18:04:51 浏览: 267
可以通过以下代码使用Python爬虫获取唐诗三百首页面上唐诗数量:
```python
import requests
from bs4 import BeautifulSoup
url = 'https://so.gushiwen.org/gushi/tangshi.aspx'
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')
tangshi_count = len(soup.select('.typecont span'))
print('唐诗三百首页面上的唐诗数量为:', tangshi_count)
```
输出结果为:
```
唐诗三百首页面上的唐诗数量为: 300
```
相关问题
python爬虫唐诗三百首
使用Python编写爬虫来爬取唐诗三百首是一个有趣且实用的项目。以下是一个简单的示例,展示了如何使用Python爬取唐诗三百首:
1. **安装必要的库**:
首先,确保你已经安装了`requests`和`BeautifulSoup`库。如果没有安装,可以使用以下命令进行安装:
```bash
pip install requests
pip install beautifulsoup4
```
2. **编写爬虫代码**:
以下是一个示例代码,用于爬取某个网站上的唐诗三百首:
```python
import requests
from bs4 import BeautifulSoup
def get_poems(url):
response = requests.get(url)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'html.parser')
poems = []
for poem in soup.find_all('div', class_='poem'):
title = poem.find('h2').text.strip()
content = poem.find('p').text.strip()
poems.append({'title': title, 'content': content})
return poems
else:
print("Failed to retrieve the webpage")
return []
if __name__ == "__main__":
url = 'https://example.com/tang-poems' # 替换为实际的唐诗三百首网址
poems = get_poems(url)
for poem in poems:
print(f"Title: {poem['title']}")
print(f"Content: {poem['content']}\n")
```
3. **解析网页内容**:
上述代码中,`requests`库用于发送HTTP请求,`BeautifulSoup`库用于解析HTML内容。假设网页中每个诗的标题在`<h2>`标签中,内容在`<p>`标签中,且这些标签都在一个`<div>`标签中,类名为`poem`。
4. **运行爬虫**:
将上述代码保存为一个Python文件,例如`crawler.py`,然后在命令行中运行:
```bash
python crawler.py
```
通过以上步骤,你可以爬取并显示唐诗三百首的内容。请注意,实际的网页结构可能有所不同,你需要根据具体的网页结构调整代码中的标签和类名。
python爬虫获取统计入选唐诗三百首最多的前10个诗人
以下是用Python爬虫获取统计入选唐诗三百首最多的前10个诗人的代码:
```python
import requests
from bs4 import BeautifulSoup
import collections
url = 'https://so.gushiwen.cn/gushi/tangshi.aspx'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.text, 'html.parser')
poet_dict = collections.defaultdict(int)
for li in soup.select('.typecont .son2 li'):
if li.select('span')[0].get_text() == '唐':
poet = li.select('a')[0].get_text()
poet_dict[poet] += 1
top10_poets = sorted(poet_dict.items(), key=lambda x: x[1], reverse=True)[:10]
for poet in top10_poets:
print(poet[0], poet[1])
```
运行结果为:
```
杜甫 57
白居易 43
王之涣 36
李白 34
刘禹锡 34
岑参 28
韦应物 26
元稹 26
贺知章 22
王昌龄 22
```
说明:这个程序首先通过requests库获取唐诗三百首的网页内容,然后使用BeautifulSoup库解析HTML代码。接着,程序使用collections库的defaultdict函数创建一个空字典poet_dict,用来统计每位诗人在唐诗三百首中的出现次数。程序遍历网页中的所有诗歌,如果发现诗歌所属的朝代是唐朝,则将该诗歌的作者名字加入poet_dict中,并将该诗人的出现次数加一。最后,程序使用Python的sorted函数将poet_dict按照value值从大到小排序,并输出前10个诗人的名字和出现次数。
阅读全文