美文网首页
使用简单re模块爬取古诗文网

使用简单re模块爬取古诗文网

作者: 徒手說梦话 | 来源:发表于2019-01-31 18:30 被阅读0次
    # 爬取古诗文网
    # 使用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模块爬取古诗文网

          本文链接:https://www.haomeiwen.com/subject/wxdlsqtx.html