# 爬取古诗文网
# 使用re、正则表达式findall函数
import re
import requests
def data_capture(url):
Contents = []
poems = []
headers = {
'Use-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36',
'referer':'https://www.gushiwen.org/default_1.aspx'
}
response = requests.get(url,headers = headers)
text = response.text
title = re.findall(r'<div class="cont">.*?<b>(.*?)</b>',text,re.DOTALL) # re.DOTALL的用法将 . 匹配到换行符
'''
.*? # 非贪婪匹配到<b>标签
(.*?) # 非贪婪匹配从<b>到</b>标签的文字
'''
dynasty = re.findall('<p class="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)
'''
.*? # 非贪婪匹配到<a>标签
<a.*?> # 非贪婪匹配到>标签
(.*?)</a> # 非贪婪匹配>到</a>标签中的文字
'''
poet = re.findall('<p class="source">.*?<a.*?>.*?<a.*?>(.*?)</a>',text,re.DOTALL)
'''
.*? # P标签下面有两个a标签,一个a标签是年代,一个是名字
<a.*?> # 第一个a标签内容
.*? # 第一个标签a后面的内容
<a.*?> # 匹配到第二个a标签内容
'''
contens = re.findall('<div class="contson".*?>(.*?)</div>',text,re.DOTALL)
for conten in contens:
Content = re.sub('<br\s/>|<p>|</p>','',conten)
Contents.append(Content.strip())
for value in zip(title,dynasty,poet,Contents):
title,dynasty,poet,Contents = value
poem = {
'题目':title,
'朝代':dynasty,
'诗人':poet,
'内容':Contents
}
poems.append(poem)
def spider():
Datas = []
urls = 'https://www.gushiwen.org/default_{}.aspx'
for i in range(1,11):
url = urls.format(i)
data_capture(url)
break
spider()
'''
ps:总结,这次爬虫使用的是re,request,findall,其中findall寻找标签下的内容通过()去完成,贪婪模式和非贪婪模式是重点
re.DOTALL的用法将 . 匹配到换行符
'''
使用简单re模块爬取古诗文网
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 在学习了python基础后,一心想着快速入门爬虫,因为我就是为爬虫而学的python,所以就找了这个豆瓣电影来爬取...
- 目标 爬取糗事百科网“文字”专题中的信息,需要爬取的信息有:用户ID、用户等级、用户性别、发表的段子文字信息、好笑...
- 目标 爬取《斗破苍穹》全文小说,网址:http://www.doupoxs.com/doupocangqiong/...