Dlam万能的猫 发表于 2022-3-15 22:14

python--小爬虫--古诗文

本帖最后由 Dlam万能的猫 于 2022-3-16 12:41 编辑

### **学校本学期开了一门爬虫课,老师爬取我们学校官网公告做示例,用到了lxml,requests两个库,今日下午,本人脑海里回荡起一句李白的”长风破浪会有时,直挂云帆济沧海“,就想着找找古诗文来看一看,陶冶一下情操,顺便练习一下刚学的爬虫,也是仅用了lxml,requests两个库,奈何本人基础太差,搞了几个小时才成功。**

### **下面贴出我的代码,大家来看看吧**

```python
import lxml.html
import requests

headers = {
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.51 Safari/537.36'
}

url = 'https://so.gushiwen.cn/gushi/tangshi.aspx'
response = requests.get(url, headers=headers)
html_index = lxml.html.fromstring(response.text)
titles = html_index.xpath("//*[@id='html']/body/div/div/div/div//a/text()")
authors = html_index.xpath("//*[@id='html']/body/div/div/div/div//span/text()")
hrefs = html_index.xpath("//*[@id='html']/body/div/div/div/div//a/@href")

tit_aut_list = [(title + author) for title, author in zip(titles, authors)]

i = 0
for href in hrefs:
    all_href = "https://so.gushiwen.cn" + href
    response1 = requests.get(all_href, headers=headers)
    html_text = lxml.html.fromstring(response1.text)
    shi = html_text.xpath("/html/body/div/div/div/div/div/text()")
    shi_str = ''.join(shi)
    print(tit_aut_list, shi_str)
    i += 1


```

surepj 发表于 2022-3-16 13:43

本帖最后由 surepj 于 2022-3-16 13:45 编辑

我也刚学Python,也写了个,大家看看:
import requests
from lxml import etree

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/99.0.4844.51 Safari/537.36',
    'referer': 'https://so.gushiwen.cn/gushi/tangshi.aspx'
}

resp = requests.get(url, headers=headers) # 第一次请求,主要拿到标题和详情链接列表
html = etree.HTML(resp.text)
titles = html.xpath('//div[@class="typecont"]/span') # xpath提取标题,链接
for i in titles:# 遍历xpath列表
    title = ''.join(i.xpath('.//text()'))# 提取古诗标题
    href = "https://so.gushiwen.cn" + i.xpath('.//@href') # 拼接古诗详情链接地址
    resp2 = requests.get(url=href,headers=headers)# 请求古诗详情页面,主要拿到古诗内容
    html2 = etree.HTML(resp2.text)
    content = ''.join(html2.xpath('//div[@id="sonsyuanwen"]/div/div/text()')) # 提取古诗内容
    print(title,content) # 打印显示标题和内容
运行效果如下:
行宫(元稹)
寥落古行宫,宫花寂寞红。白头宫女在,闲坐说玄宗。

登鹳雀楼(王之涣)
白日依山尽,黄河入海流。欲穷千里目,更上一层楼。

新嫁娘词(王建)
三日入厨下,洗手作羹汤。未谙姑食性,先遣小姑尝。

... ...

52shine 发表于 2022-3-16 08:31

Triple.J 发表于 2022-3-15 23:49

谢谢大佬,学到了很多东西:lol

wsong76 发表于 2022-3-16 00:06

爬虫是不是很难学习啊?

bennyt 发表于 2022-3-16 01:42

不错,在学习中巩固。

小亮丶1 发表于 2022-3-16 07:18

爬虫是不是很难学习啊?

Dream0408 发表于 2022-3-16 09:05

那个第一个模块lxml是啥

anlimer 发表于 2022-3-16 09:13

谢谢大佬,学习学习

DS777 发表于 2022-3-16 10:46

好像可以简单点,但是我不回

傲天越 发表于 2022-3-16 10:59

学习一下,感谢分享!!!
页: [1] 2 3
查看完整版本: python--小爬虫--古诗文