爬取的网站链接为 base_url= https://www.gushiwen.org/

想按照页面右边栏的各个分类进行爬取,例如“春天”,“夏天”,“爱情”,“爱国”等。

拿“爱情”类别举例,点进去发现链接变为 https://so.gushiwen.org/gushi/aiqing.aspx

ctrl+shift+I   观察html页面结构   发现每个诗的链接都藏在<div class="typecont">下,通过xpath很容易获取链接。

base_url 加上这里<a href>后面的链接即可找到诗词所在页面:

同样的道理获取朝代、诗人、内容。

获取内容时要注意,有的格式为<div> 文本</div>,但是有的格式为<div> <p>文本</p> </div>

所以要先获取到上一级之后 再用 .xpath("string(.)")。 全部代码如下:

import re
import requests
from lxml import etree
import os
import csvclass spider:def __init__(self,start_url):self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.84 Safari/537.36'  #noqa}self.base_url='http://so.gushiwen.org'def crawl_title(self):html = requests.get(start_url,headers=self.headers).content# print(html)selector = etree.HTML(html)poetry_link = selector.xpath("//div[@class='typecont']//@href ")# print(title_str)# title = re.findall()file_path = os.path.split(os.path.realpath(__file__))[0] +  os.sep +"aiqing.csv"csvfile = open(file_path,"a+",encoding='utf-8',newline='')for link in poetry_link:url = self.base_url + link# print(url)res=requests.get(url,headers=self.headers).contentselector = etree.HTML(res)title=selector.xpath("//div[@class='cont']//h1/text()")[0]# print(title)#朝代dynasty_str = selector.xpath("//div[@class='cont']//p[@class='source']/a/text()")dynasty = dynasty_str[0]#作者author = dynasty_str[1]# print(dynasty)# print(author)#内容c = selector.xpath("//div[@class='sons'][1]//div[@class='contson']")[0]info = c.xpath("string(.)")content = ''content = content.join(info)# print(content)writer = csv.writer(csvfile)data_row = [author,dynasty,title,content,"爱情"]writer.writerow(data_row)csvfile.close()def start(self):self.crawl_title()if __name__ == '__main__':start_url='http://so.gushiwen.org/gushi/aiqing.aspx'pp = spider(start_url)pp.start()

执行之后即生成aiqing.csv文件。

想要爬取其他类别修改一下start_url以及文件名即可。

【爬虫练手小demo】爬取古诗词相关推荐

  1. 爬虫练手小项目:豆瓣高分图书TOP100

    爬虫练手小项目:豆瓣高分图书TOP100 import requests import re from requests.exceptions import RequestException impo ...

  2. 从入门到入土:Python爬虫学习|实例练手|详细讲解|爬取腾讯招聘网|一步一步分析|异步加载|初级难度反扒处理|寻找消失的API来找工作吧

    此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 本人博客所有文章纯属学习之用,不涉及商业利益.不合适引用,自当删除! 若 ...

  3. python精彩小视频_Python爬虫:全民小视频爬取,你想到了什么?

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 本次目标 爬取全民小视频 在这里插入图片描述 选择影视类目 在这里插入图片描 ...

  4. 爬虫urllib库小项目---爬取豆瓣读书网的海报和书籍名称并存储

    url = "https://book.douban.com/latest?icn=index-latestbook-all" 小项目需求: 1.图书海报 2.图书海报存储到本地地 ...

  5. SSM练手小demo——BookShop图书网络销售系统

    下载地址 https://github.com/superdoog/bookshop 项目预览 http://49.235.62.115:8080/BookShop 前台 http://49.235. ...

  6. Python 小小爬虫练手,爬取自己的IP

                 Python 小小爬虫练手,爬取自己的IP import re import urllib.request url="http://2020.ip138.com/i ...

  7. 练手小项目,爬取3DM图片

    博客原文:https://weweweha.com 1. 概述 ​ 爬取3DM指定网页的游戏壁纸,并且通过多线程来加速爬取图片的速度. 2.使用库 ​ request库用来1解析指定网页,re库用来搜 ...

  8. Python爬虫利用18行代码爬取虎牙上百张小姐姐图片

    Python爬虫利用18行代码爬取虎牙上百张小姐姐图片 下面开始上代码 需要用到的库 import request #页面请求 import time #用于时间延迟 import re #正则表达式 ...

  9. python输出古诗词_python爬虫——爬取古诗词

    一. 概要 1.通过python爬虫循环爬取古诗词网站唐诗宋词 2.落地到本地数据库 二. 页面分析 首先通过firedebug进行页面定位: 其次源码定位: 最终生成lxml etree定位div标 ...

最新文章

  1. 周志华,李航来智源大会了!
  2. Android .so .aar..jar文件的使用方式
  3. Google ToolBar 3.0 Beta试用
  4. tcp/ip协议包含哪几层_TCP/IP协议的简单介绍
  5. shell mysql eof_shell EOF
  6. js_long.php,protobuf.js 与 Long.js的使用详解
  7. Oracle设置和修改system和scott的口令,并且如何连接到system和scott模式下
  8. JS模块化开发_思维导图
  9. wkwebview 不加载ajax,WKWebView加载显示问题
  10. k8s核心技术-集群安全机制(RBAC实现鉴权)---K8S_Google工作笔记0040
  11. OPENCV用户手册之图像处理部分(之四):滤波器与色彩转换(中文翻译)
  12. vim python3开发环境_[宜配屋]听图阁 - ubuntu16.04制作vim和python3的开发环境
  13. 手机界的革命-云手机(华为云)
  14. paip.提升用户体验-----用户注册设计
  15. 4种解决json日期格式问题的办法
  16. 新一代 OIer 的快速入门命令行教程
  17. 《流浪方舟》- 废土世界的冒险之旅
  18. 循环肿瘤细胞(circulating tumor cells,CTCs)
  19. SSM框架实战详细教程(十四)贯穿项目实战之三层架构
  20. eclipsepython插件_Eclipse安装配置PyDev插件

热门文章

  1. Problem A:Serval 的俳句
  2. 四大场景、16款新品,TCL从家庭到园区的撒豆成兵...
  3. 从机械自动化专业转行到Java工程师的学习之路
  4. [书摘]老外侃中国(埃瑞克【挪威】口述,郭莹撰稿)
  5. CTF泄漏libc基址的方法
  6. 真无线蓝牙耳机选购小知识,全网口碑前五的真无线蓝牙耳机测评
  7. python signal模块_Python2.7 signal
  8. Android 文件件详细介绍
  9. C# 发送带cookie的http请求_C#发送请求带cookie
  10. 荣耀v8华为钱包,为什么卡包里还是只有上海公交卡?--已解决