使用正则表达式爬取古诗文网唐诗300首

编程入门 行业动态 更新时间:2024-10-04 21:21:37

使用正则表达式爬取<a href=https://www.elefans.com/category/jswz/34/1739792.html style=古诗文网唐诗300首"/>

使用正则表达式爬取古诗文网唐诗300首

思路

先从唐诗300首页面获取所有唐诗详情页的链接; 
再从每一首唐诗的详情页提取标题、作者、朝代、内容等信息。

源码

# !/usr/bin/env python# -*- coding:utf-8 -*-import reimport requestsdef crawl(start_url):base_url=''req_headers={        'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36'}res=requests.get(start_url,headers=req_headers)    if res.status_code==requests.codes.ok:html=res.text        # 获取所有诗的链接parttern_href=repile(r'<span><a href="(.*?)".*?</span>',flags=re.DOTALL)hrefs=re.findall(parttern_href,html)        # 获取每一首诗的内容,并保存到本地with open('唐诗300首.txt',mode='a',encoding='utf-8') as f:            for href in hrefs:href=base_url+hrefres=requests.get(href,headers=req_headers)                if res.status_code == requests.codes.ok:html = res.text                    # 标题parttern_title = repile(r'<div class="cont">.*?<h1 .*?>(.*?)</h1>', re.DOTALL)title=re.search(parttern_title,html).group(1)                    # 朝代parttern_dynasty = repile(r'<div class="cont">.*?<p class="source"><a href=".*?">(.*?)</a><span>:.*?</p>', re.DOTALL)dynasty=re.search(parttern_dynasty,html).group(1)                    # 诗人parttern_author = repile(r'<div class="cont">.*?<p class="source">.*?:</span><a href=".*?">(.*?)</a> </p>', re.DOTALL)author=re.search(parttern_author,html).group(1)                    # 内容parttern_content = repile(r'<div class="cont">.*?<div class="contson" id=".*?">(.*?)</div>', re.DOTALL)content=re.search(parttern_content,html).group(1)content=re.sub(r'<br />','\n',content)content=re.sub(r'<p>','',content)content=re.sub(r'</p>','',content)print('正在获取 {title}'.format(title=title))f.write('{title}\n{dynasty}:{author}\n{content}\n'.format(title=title,dynasty=dynasty,author=author,content=content))if __name__ == '__main__':start_url='/'crawl(start_url)

运行结果


转载于:

更多推荐

使用正则表达式爬取古诗文网唐诗300首

本文发布于:2024-02-13 10:46:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1758393.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:古诗   唐诗   文网   正则表达式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!