python爬取古诗词网 正则表达式

目前刚刚学了点爬虫,发现正则表达式的解析速度最快。下面是源码,复制粘贴就能用。2019年8月9日测试可用
需要安装的库:requests

import requests
import re


def parse_page(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36"
    }
    response = requests.get(url,headers=headers)
    text=response.content.decode('utf-8')

    titles = re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>',text,re.DOTALL)
    dynasties = re.findall(r'<p\sclass="source">.*?<a.*?>(.*?)</a>',text,re.DOTALL)
    authors = re.findall(r'<p\sclass="source">.*?<a.*?<a.*?>(.*?)</a>',text,re.DOTALL)
    poetries = re.findall(r'<div\sclass="contson".*?>(.*?)</div>',text,re.DOTALL)
    content=[]
    for poetry in poetries:
        poetry=re.sub('<p>|</p>','',poetry)
        poetry=re.sub('<br />','\n',poetry).strip()
        content.append(poetry)
    poems = zip(titles,dynasties,authors,content)
    for poem in poems:
        title,dynasty,author,content = poem
        print("《"+title+"》")
        print(dynasty+" · "+author)
        print(content+"\n")

def main():
    start = int(input("从这一页开始爬取1+:"))
    end = int(input("到这一页结束10-:"))
    base_url = "https://www.gushiwen.org/default_{}.aspx"
    for i in range(start,end+1):
        url = base_url.format(i)
        parse_page(url)

if __name__=="__main__":
    main()

运行截图:
古诗文

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值