版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
使用正则爬取古诗文网页
获取网站url:https://www.gushiwen.org/default_1.aspx下的标题朝代作者古诗,话不多说直接上代码。
//
import re
import requests
def parse_page(url):
headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0'}
response = requests.get(url,headers=headers)
text = response.text
#print(response.text)
biaoti = re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>',text,re.DOTALL)#re.DOTALL代表点获取所有的字符,因为其中有换行符,所以要加上非贪婪,如果不加上问号,就代表在div中随机匹配一个标签为b的字符串,re.s也是同样的效果
#print(biaoti)
chaodai = re.findall(r'<p class="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)
#print(zuozhe)
zuozhe = re.findall(r'<p class="source">.*?<a.*?>.*?<a.*?>(.*?)</a>',text,re.DOTALL)
#print(zuozhe)
gushi1 = re.findall(r'<div class="contson".*?>\n(.*?)</div>',text,re.DOTALL)
#print(gushi1)
b = []
for gushi in gushi1:
x = re.sub(r'<.*?>','',gushi)#这里表示把含有<>标签的元素全部替换为空
#print(x.strip())#去掉空的行
b.append(x.strip())
a = []
for value in zip(biaoti,chaodai,zuozhe,b):
biaotis,chaodais,zuozhes,bs = value
pepo = {
'标题':biaotis,
'朝代':chaodais,
'作者':zuozhes,
'古诗':bs
}
#print(pepo)
a.append(pepo)
for pepo in a:
print(pepo)
def main():
url = 'https://www.gushiwen.org/default_1.aspx'
parse_page(url)
if __name__ == '__main__':
main()
最近学数据清洗还没有弄明白,等明白了再发出来,先水一篇