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

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 request

url = "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'])

在这里插入图片描述

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

ps:萌新一枚,余生很长,请多指教。
在这里插入图片描述

发布了41 篇原创文章 · 获赞 24 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/csacs/article/details/86681625