爬取古诗文网古诗词

#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(‘\\。‘, ‘。\n‘, s)
    s = re.sub(‘\\!‘, ‘!\n‘, s)
    s = re.sub(‘\\?‘, ‘?\n‘, s)
    s = re.sub(‘\\:‘, ‘:\n‘, s)
    s = re.sub(‘\\;‘, ‘:\n‘, 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, "\n", dict[i], file=text)
        print( i, "\n", 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)

原文地址:https://www.cnblogs.com/loeFairy/p/12244110.html

时间: 2024-10-11 05:29:35

爬取古诗文网古诗词的相关文章

云打码 古诗文网

# 云打码  代码示例 import http.client, mimetypes, urllib, json, time, requests class YDMHttp: apiurl = 'http://api.yundama.com/api.php' username = '' password = '' appid = '' appkey = '' def __init__(self, username, password, appid, appkey): #构造方法 self.user

第一篇博客(python爬取小故事网并写入mysql)

前言: 这是一篇来自整理EVERNOTE的笔记所产生的小博客,实现功能主要为用广度优先算法爬取小故事网,爬满100个链接并写入mysql,虽然CS作为双学位已经修习了三年多了,但不仅理论知识一般,动手能力也很差,在学习的空余时间前前后后DEBUG了很多次,下面给出源代码及所遇到的BUG. 本博客参照代码及PROJECT来源:http://kexue.fm/archives/4385/ 源代码: 1 import requests as rq 2 import re 3 import codecs

利用Scrapy爬取1905电影网

本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例--爬取1905电影网 相关资料 Scrapy 爬虫介绍 Scrapy是Python开发的一个快速,高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘.监测和自动化测试. Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改.它也提供了多种类型爬虫的基类,如BaseSpider.sitemap爬虫等,最

Python爬取中国天气网天气

Python爬取中国天气网天气 基于requests库制作的爬虫. 使用方法:打开终端输入 "python3 weather.py 北京(或你所在的城市)" 程序正常运行需要在同文件夹下加入一个"data.csv"文件,内容请参考链接:https://www.cnblogs.com/Rhythm-/p/9255190.html 运行效果: 源码: import sys import re import requests import webbrowser from

爬虫----爬取校花网视频

import requests import re import time import hashlib def get_page(url): print('GET %s' %url) try: response=requests.get(url) if response.status_code == 200: return response.content except Exception: pass def parse_index(res): obj=re.compile('class="i

python爬虫入门练习,使用正则表达式和requests爬取LOL官网皮肤

刚刚python入门,学会了requests模块爬取简单网页,然后写了个爬取LOL官网皮肤的爬虫,代码奉上 #获取json文件#获取英雄ID列表#拼接URL#下载皮肤 #导入re requests模块 import requestsimport reimport time def Download_LOL_Skin(): #英雄信息Json文件地址:https://lol.qq.com/biz/hero/champion.js #获取英雄信息列表 json_url = "https://lol.

简单爬取微医网

一.利用request和xpath爬取微医网 #!/usr/bin/env python # -*- coding: utf-8 -*- #author tom import requests from lxml import etree import pymongo #爬取微医网类 class DoctorSpider(): #初始化应该具有的一些属性 def __init__(self): self.headers={'User-Agent': 'Mozilla/5.0 (Windows N

selenium爬取煎蛋网

selenium爬取煎蛋网 直接上代码 from selenium import webdriver from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as ES import requests import urllib.requ

使用 Scrapy 爬取去哪儿网景区信息

Scrapy 是一个使用 Python 语言开发,为了爬取网站数据,提取结构性数据而编写的应用框架,它用途广泛,比如:数据挖掘.监测和自动化测试.安装使用终端命令 pip install Scrapy 即可. Scrapy 比较吸引人的地方是:我们可以根据需求对其进行修改,它提供了多种类型的爬虫基类,如:BaseSpider.sitemap 爬虫等,新版本提供了对 web2.0 爬虫的支持. 1 Scrapy 介绍 1.1 组成 Scrapy Engine(引擎):负责 Spider.ItemP