首先,我们先对整个爬取框架进行分析,这与利用xpath爬取网页信息类似。通过requests获得网页信息,然后转换成text格式,通过findall方法,用正则表达式进行查找需要的信息,然后对采集到的信息进行过滤,拿到最后需要的信息。最后对信息进行序列化得到了我们想要的信息。
下面的是代码。

import re
import requestsHeaders = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36 Edg/89.0.774.48"
}url="https://so.gushiwen.cn/shiwens/default.aspx?page={}"def spider():# parse_page(url)for p in range(1,4):url1=url.format(p)parse_page(url1)def parse_page(url):resp=requests.get(url,Headers)text=resp.texttitles=re.findall(r'<div class="cont">.*?<b>(.*?)</b>',text,re.DOTALL)# print(titles)authors = re.findall(r'<p class="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)dynastys = re.findall(r'<p class="source">.*?<a.*?>.*?<a.*?>(.*?)</a>', text, re.DOTALL)contents = re.findall(r'<div class="contson" .*?>(.*?)</div>', text, re.DOTALL)# print(authors,dynastys,contents,titles)contentslist=[]for content in contents:x=re.sub(r'<.*?>',"",content)contentslist.append(x.strip())#zip序列解包poems=[]for v in zip(titles,authors,dynastys,contentslist):title,author,dynasty,content=vpoem={"title":title,"author":author,"dynasty":dynasty,"content":content}poems.append(poem)print(poems)if __name__ == '__main__':spider()

在这其中主要运用了正则表达式进行信息的爬取,对于正则表达式大家如果有什么不懂的,可以参阅一下下面的链接。
python正则表达式详解
在上述代码中主要用到了python标准库中的re库,无需下载,直接导入。用到了其中的findall方法进行查找,re.DOTALL函数使元字符“.”匹配任意字符,包括换行符,re.sub方法将字符串中所有与pat参数匹配的项用repl参数代替替换,返回新字符串,用zip函数对多个可迭代对象压缩到一起,进行序列解包。

对于正则表达式这一块,我觉得还是得好好背背基础知识,对于一些网页源代码不正规的网页爬取用正则表达式比较好。

利用正则表达式爬取中国古诗文网相关推荐

  1. 爬虫初级二(爬中国古诗文网)

    爬虫初级二(爬中国古诗文网) 第一步先分析要爬取网站的网址 为什么要先分析网址呢?通过网址我们可以知道此网页页面是异步请求(post)还是同步请求(get) get请求:最常见的HTTP请求方式,普通 ...

  2. 爬取中国最好大学网数据(Python的Scrapy框架与Xpath联合运用)

    前言        大二上学期学校外出实习,做了一个关于爬取中国最好大学网http://www.zuihaodaxue.com/rankings.html的项目用的这个Scrapy框架,多线程还挺好用 ...

  3. 使用selenium + chrome爬取中国大学Mooc网的计算机学科的所有课程链接

    目的:使用selenium + chrome爬取中国大学Mooc网计算机学科的所有的课程链接列表 思路:找到每个分页的节点属性为class="m-course-list" 的div ...

  4. 利用正则表达式爬取豆瓣电影排名

    利用正则表达式爬取豆瓣电影排名 一/正则表达式 二/用正则表达式爬取豆瓣top250 一/正则表达式 很多不太懂正则的朋友,在遇到需要用正则校验数据时,往往是在网上去找很久,结果找来的还是不很符合要求 ...

  5. 爬取中国所有银行官网网址信息

    爬取中国所有银行官网网址信息,并保存在文档中. from urllib import request from urllib.request import urlopen import re url ...

  6. python3利用正则表达式爬取内涵段子

    似乎正则在爬虫中用的不是很广泛,但是也是基本功需要我们去掌握. 先将内涵段子网页爬取下来,之后利用正则进行匹配,匹配完成后将匹配的段子写入文本文档内.代码如下: # -*- coding:utf-8 ...

  7. 利用正则表达式爬取网络小说,并按照章节下载到本地

    利用正则表达式爬取网络小说,并按照章节下载到本地 闲来无事,尝试了使用正则表达式爬取了某个明显没有反扒机制的小说网站,其实也是刚刚接触爬虫,第一次从网络上爬到感兴趣的东西还是令人开心的. 先贴为敬. ...

  8. 使用Requests+正则表达式爬取中国工作网招聘信息,并保存为JSON格式

    文章目录 一.准备 1.数据 2.数据字段 二.数据爬取 1.设置预设 2.观察网页源码(部分) 3.制定正则规则 三.数据存取 存为JSON文件 将多个字段列表进行打包,并放入一个list中 四.完 ...

  9. 利用正则表达式爬取猫眼电影TOP100信息

    本文利用requests库和正则表达式爬取了猫眼电影TOP100电影信息,并将电影封面和标题.主演等文字信息保存在了本地.本文完整代码链接:https://github.com/iapcoder/Ma ...

最新文章

  1. 后深度学习时代的一大研究热点?论因果关系及其构建思路
  2. cnzz统计代码引起的Bad Request - Request Too Long
  3. 全球及中国自卸车行业深度分析与“十四五”发展战略规划研究报告2022-2028年版
  4. Oracle数据库的视图
  5. Python内置函数(30)——super
  6. Python 使用特性对属性进行访问
  7. 当使用malloc提示找不到标识符时?
  8. 第5章 广义与一般线性模型
  9. LINUX:Contos7.0 / 7.2 LAMP+R 下载安装Php篇
  10. 32位单精度浮点数表示法
  11. ZR提高失恋测2(9.7)
  12. ppm与LSB含义,换算
  13. git - 1.基础
  14. 基于 Java Spring Security 的关注微信公众号即登录的设计与实现 ya
  15. 【正点原子FPGA连载】 第三章 硬件资源详解 摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0
  16. oracle19c创建表空间,Oracle19c 创建表空间
  17. 编译原理——自上而下语法分析
  18. 第八章 组织结构设计与类型
  19. 你是切身体会到了PHP使用体验差;还是因为就业前景等因素让你觉得PHP很差?
  20. 李秘书讲写作:这节课的标题起什么好?

热门文章

  1. 极米科技首发三款新品 宣布与百度成立AI无屏实验室丨Xtecher 前线
  2. html标签必须放body吗,为什么script标签一般放在body下面
  3. 裴蜀定理(贝祖定理)
  4. 网址导航站路在何方???
  5. Python练习题答案: 杂乱无章的页面列表【难度:1级】--景越Python编程实例训练营,1000道上机题等你来挑战
  6. 解决:YOLOv5 is out of date by 16 commits. Use ‘git pull‘ or ‘git clone
  7. HMDB网站 爬取工具
  8. 【项目】C++ MiniFtpd项目手册 笔记版
  9. 2022第十三届蓝桥杯省赛B组Python
  10. Python有限体积流体开尔文-亥姆霍兹不稳定性