Python 正则表达式之爬取古诗文名句

概述:

 山有木兮木有枝,心悦君兮君不知。

概念介绍:

  • 正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑。简单来说就是利用事先规定好的符号规则进行组合,然后过滤匹配,得到自己想要的数据!
  • Python 正则表达式:import导入re模块使 Python 语言拥有全部的正则表达式功能。

基本知识:

  • 正则表达式常用字符:
元字符 含义
. 匹配一个除了\n的任意字符
* 匹配前面的表达式0次或者任意次
匹配前面的表达式0次或者1次 最多一次
+ 匹配前面的表达式1次或者任意次 最少一次
() 只返回匹配的内容
.* 贪婪匹配,一直匹配到最后一个
.*? 非贪婪匹配,匹配到第一个及结束
{n} 匹配n次
\d 匹配任何一个数字 D为不匹配任何数字
\w 匹配任何一个字母 W为不匹配任何数字
  • Python 正则表达式常用函数
函数 含义
re.findall 可以获取字符串中所有匹配的字符串,返回一个数组
re.S 忽略换行
re.I 忽略大小写

本地爬取:

  • 首先本地保存文件1.txt,里面保存的时我比较喜欢的一首诗 When you are old.
import re                        #导入正则匹配模块
text = ''
file = open('1.txt')             #打开本地文档
for line in file:#line =line.strip('\n') 如果想过滤掉每行换行符,可以加该语句text = text + line  #将每一行取出,放到text里
file.close()result = re.findall(' a\w*',text) #匹配首字母是a的所有字符#result = set(result) 不重复唯一表示
print(result)

网页爬取:

爬网页整体流程

爬取网页的流程一般如下:
1.  选着要爬的网址(url)
2.  使用 python 登录上这个网址(urlopen、requests 等)
3.  读取网页信息(read() 出来)
4.  将读取的信息放入 BeautifulSoup
5.  使用 BeautifulSoup 选取 tag 信息等

-夜已深了,先不搞了,未完待续…

#coding=utf-8
import re
from urllib import requesturl = "https://so.gushiwen.org/mingju/"html_response = request.urlopen(url).read().decode('utf-8') #请求url并读取编码赋值给html_response
poetry_info = {}  #定义一个数组
poetry_info['title'] = re.findall(r'<a style=" float:left;" target="_blank" href="/mingju/juv_2d8bb03f1e19.aspx">(.*?)</a>',html_response)[0] #匹配<a>后的,非贪婪匹配(匹配一次,不往后进行)到</a>之前的内容
poetry_info['author'] = re.findall(r'target="_blank" href="/shiwenv_4a96c8287eb5.aspx">(.*?)</a>',html_response)[0]##匹配targer后的,非贪婪匹配到</a>之前的内容
#poetry_div = re.findall(r'<div class="sons" style=" padding-bottom:12px;">.*?<div class="pagesright">',html_response,re.S|re.I)[0]#匹配div中间所有的html。【0】数组中取键位为0值
#tag_a = re.findall(r'<a.*</a>',poetry_div,re.S|re.I)[0] #匹配div中<a开头,贪婪匹配(一直匹配到最后一个)到</a> re.S 忽略回车 I 大小写
#tag_url= re.findall(r'href="(.*?)"',tag_a) #匹配每个a标签中的href文件,()为只显示匹配内容
#poetry_info['title'] = re.findall(r'<a style=" float:left;" target="_blank" href="/mingju/juv_2d8bb03f1e19.aspx">(.*?)</a>',html_response)#匹配每个诗句的具体url
print(poetry_info['title'] +'-------------'+ poetry_info['author'])


利用xpatch爬取

import requests
from parsel import Selector
import threadingheaders = {'authority': 'so.gushiwen.org','cache-control': 'max-age=0','upgrade-insecure-requests': '1','user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36',
}def get_page(num):params = (('p',f'{num}'),)response = requests.get('https://so.gushiwen.org/mingju/default.aspx', headers=headers, params=params)response.encoding = "utf8"sel = Selector(response.text)cont = sel.xpath('//div[@class="sons"]//div[@class="cont"]')res = []for s in cont:l1 = s.xpath(".//a[1]/text()").extract_first()l2 = s.xpath(".//a[2]/text()").extract_first()#data = open("data.txt","a")#data.write(l1+"---------"+l2+"\n")print("num",num,l1+l2)res.append((l1,l2))return res
th = []
for p in range(1,30):t = threading.Thread(target=get_page,args=(p,))th.append(t)
for t in th:t.start()

总结:持续更新,未完待续…

ps:萌新一枚,余生很长,请多指教。

Python 正则表达式之爬取古诗文名句相关推荐

  1. 用正则表达式爬取古诗文网站,边玩边学

    用正则表达式爬取古诗文网站,边玩边学 古诗文网站是一个充满了文化气息的网站,里面收录了大量的古代诗词和文章,对于喜欢文化和历史的人来说是一个非常不错的学习资源.但是如果需要大量下载或者获取古诗文网站上 ...

  2. Python实战---使用正则表达式爬取古诗文网

    使用正则表达式爬取古诗文网 爬取目标 具体字段为: title 标题 dynasty 朝代 author 作者 content 内容 tag 标签 实现代码 ''' @Description: 使用正 ...

  3. python爬取新闻存入数据库_python 爬取古诗文存入mysql数据库的方法

    使用正则提取数据,请求库requests,看代码,在存入数据库时,报错ERROR 1054 (42S22): Unknown column 'title' in 'field list'.原来是我写s ...

  4. Python真香之爬取古诗文网

    最近在学习Python相关,学习了基本的语法后想搞点事情试试,所以来爬取下古诗文网中的相关作者信息 准备资料: 爬取目标:爬取古诗文网的唐代作者的信息 目标分析: 一级页面是所有唐代作者的列表,点击名 ...

  5. python爬虫入门_3种方法爬取古诗文网站

    目的: 爬取古诗文网的古诗词,获取详细信息,目标网站:https://www.gushiwen.org/default.aspx?page=1 1.根据网页分析可知 下面包含了当前页面的所有信息,所以 ...

  6. Python使用网络抓包的方式,利用超级鹰平台识别验证码登录爬取古诗文网、上篇--识别验证码

    Python使用网络抓包的方式,利用超级鹰平台识别验证码登录,<爬取古诗文网>. 上篇–识别验证码 序言: 哈喽,各位小可爱们,我又来了,这次我新学习到的内容是python爬虫识别验证码. ...

  7. 爬取古诗文网的推荐古诗

    爬取古诗文网的推荐古诗 思路分析 完整代码 结果展示 思路分析 本次的主要目的是练习使用正则表达式提取网页中的数据. 该网站的推荐古诗文一共有10页,页码可以在URL中进行控制,比如说,下面的URL指 ...

  8. 爬虫实战之爬取古诗文网站 (详细)

    爬取古诗文网站 重点是练习正则表达式的使用 链接变化 url_base = 'https://www.gushiwen.cn/default_{}.aspx' for i in range(1, 2) ...

  9. scrapy框架爬取古诗文网的名句

    使用scrapy框架爬取名句,在这里只爬取的了名句和出处两个字段.具体解析如下: items.py 用来存放爬虫爬取下来的数据模型,代码如下: import scrapyclass QsbkItem( ...

最新文章

  1. linux数据库什么意思,Linux系统中的数据库命令是什么
  2. 远程办公如何保持高效?这群开发者们是这样做的
  3. 基于iscsi实现文件存储共享
  4. hashmap的五种便利方式
  5. PMP 之程序性计划、实体性计划、综合计划
  6. 孙正义举债豪购ARM的3个理由:潜伏物联网时代
  7. LeetCode(28): 实现strStr()
  8. java中gradlew 命令_gradle命令学习
  9. 关于Oracle RAC调整网卡MTU值的问题
  10. linux程序已经在后台运行冻结了_让linux下程序永远后台运行
  11. 英特尓祭出开挖数据价值的“六脉神剑”!
  12. 实现键盘输入信息,按enter键调用摄像头自动拍照
  13. WordPress主题插件Modown6.1绿色版+Erphpdown11.6等多插件
  14. 触屏java版象棋下载 游戏下载安装,天天象棋下载手机版
  15. 关于电阻的通流能力思考
  16. python陆股通_沪股通、深股通、港股通、陆股通都是什么鬼?傻傻分不清
  17. 苹果电脑如何设置开启远程控制?
  18. 必看~与众不同、通俗易懂的lol版Java学习路线图
  19. CSS——CSS基础(一篇就够用)
  20. JAVA技术栈学习路线整理【java后端开发应聘向】

热门文章

  1. @TableField(fill = FieldFill.INSERT)
  2. excel中的筛选功能
  3. 机器人上单神装_LOL无敌神钩机器人出装解析 钩到你怀疑人生
  4. 微信赛马服务器,首日卡组汇总:服务器炸了多次,标准狂野全员自闭全员赛马!...
  5. JAVA计算机毕业设计音乐社交平台设计Mybatis+系统+数据库+调试部署
  6. 2. ABAP RSA签名- SAP调用上上签API(2)
  7. DApp实战:开发属于你的第一个DApp - 我的日记本
  8. 阿斯利康英飞凡在华获批用于治疗广泛期小细胞肺癌;​君实生物与嘉晨西海成立合资公司 | 医药健闻...
  9. 态度决定一切,细节决定成败(12.21总结)
  10. c语言枚举类型有什么作用,关于C语言枚举类型不得不说的故事