第二篇,使用re正则表达式获取古诗文信息

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43779803/article/details/102734278

使用正则爬取古诗文网页

获取网站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()

最近学数据清洗还没有弄明白,等明白了再发出来,先水一篇

猜你喜欢

转载自blog.csdn.net/weixin_43779803/article/details/102734278