python 正则-爬 古诗文网 推荐栏的内容

 

#encoding: utf-8
import requests
import re

def get_page(url,index):
    headers = {
        'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.94 Safari/537.36"
    }
    ret = requests.get(url=url, headers=headers)
    # print(ret.text)
    t = ret.text
    titles = re.findall('<div\sclass="cont">.*?<b>(.*?)</b>', t, re.DOTALL)          #获取当页的所有标题
    dynasties = re.findall('<p\sclass="source">.*?<a.*?>(.*?)</a>', t, re.DOTALL)       #获取当页的所有朝代
    authors = re.findall('<p\sclass="source">.*?</span>.*?<a.*?>(.*?)</a>', t, re.DOTALL)  #获取当页的作者
    contsons_tag = re.findall('<div\sclass="contson".*?>(.*?)</div>', t, re.DOTALL)      #获取当页诗词的内容
    contsons = []   定义一个列表 报错处理后的诗词内容
    poems=[]
    for contson in contsons_tag:
        c = re.sub('<.*?>', "", contson)  #去掉诗词中的 <br /> 标签
        contsons.append(c.strip())      #去掉 换行符号 \n 

    for title,dynastie,author,contson  in zip(titles,dynasties,authors,contsons):
        poem={      #使用一个字典保存一篇诗
            "title":title,
            "dynastie": dynastie,
            "author": author,
            "contson": contson

        }
poems.append(poem)  #保存到列表中
for item in poems:  #遍历 print(item) print("-"*40) print('*'*60+str(index)) def main(): for i in range(1,16): url = 'http://www.gushiwen.org/default_%s.aspx' %(i) get_page(url,i) if __name__ == '__main__': main()

 

对别第一页的最后一遍,结果是对的。

 

 

posted @ 2018-01-27 21:24  我爱测试胜于爱自己  阅读(117)  评论(0)    收藏  举报