爬取古诗文网古诗词

Posted loefairy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬取古诗文网古诗词相关的知识,希望对你有一定的参考价值。

#python3.6
#爬取古诗文网的诗文

import requests
from bs4 import BeautifulSoup
import html5lib
import re
import os

def content(soup):
    b = 1
    poetrydict = dict()
    for i in soup.find_all(a)[8:]:
        if i.get(href):
            url = %s%s % ("https://so.gushiwen.org/",i.get(href))
            if (i.get(href) == "/gushi/tangshi.aspx" or i.get(href) =="/gushi/xiaowen.aspx"):
                # 到唐诗三百或小学文言即结束
                break
        else:
            url=i.get(href)
        sbody = re.sub(u"\(.*?\)", "", str(i.text))
        # 抽取题目(汉字)去掉题目中的括号以及括号中的内容
        # sbody=re.sub("\·","",sbody).strip()
        # 去掉题目中的"·"符号
        print(b, sbody,url)
        poetrydict[sbody]=url
        b=b+1

    return poetrydict
#返回一个键为诗的题目,值为诗文链接的字典

def fulltext(pdict):
    c=b=d=0
    poetrydict=dict()
    for i in pdict:
        if pdict[i]:
            s= requests.get(pdict[i])
            soup= BeautifulSoup(s.text, html5lib)
            text2=soup.find_all(div)[9]
            poetry = str(text2.find_all(div)[4].text)
            poetry = re.sub(s+, ‘‘, poetry).strip()
            #替换调空白(空格、换行)
            poetry = re.sub(u"\(.*?\)", "", poetry)
            #去掉括号括起来的通假字还有括号
            poetrydict[i]=formattext(poetry)
        else:
            poetrydict[i]=None
    return poetrydict
# 将诗文和题目存进一个字典中,并将此字典作为函数的返回

def formattext(s):
    s = re.sub(\。, , s)
    s = re.sub(\!, , s)
    s = re.sub(\?, , s)
    s = re.sub(\:, , s)
    s = re.sub(\;, , s)
    s = re.sub(\「,‘‘, s)
    s = re.sub(\」, ‘‘, s)
    s = re.sub(\《, ‘‘, s)
    s = re.sub(\》, ‘‘, s).strip()
    return s
# 对输出诗文做一些格式上的调整,还有待完善

def output(dict,text):
    for i in dict:
        # print(dict[i])
        print("####", i, "
", dict[i], file=text)
        print( i, "
", dict[i])
    text.close()

if __name__ == __main__:
    strc = input("请输入(类别)链接:")
    ## 如,https://so.gushiwen.org/gushi/tangshi.aspx
    #网页右侧边栏
    sc = input("请输入文件名:")
    sw = requests.get(strc)
    soup = BeautifulSoup(sw.text, html5lib)
    s=D:\pythonPROJECT\+sc+".md"
    # 存储目录
    file = open(s, "w", encoding=utf-8)
    output(fulltext(content(soup)),file)

 

以上是关于爬取古诗文网古诗词的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫——爬取古诗词

云打码 古诗文网

爬取唐诗

用正则表达式爬取古诗文网站,边玩边学python爬虫入门进阶(09)

用正则表达式爬取古诗文网站,边玩边学python爬虫入门进阶(09)

用正则表达式爬取古诗文网站,边玩边学python爬虫入门进阶(09)