爬虫之牛刀小试(二):爬古诗文网的数据

古诗文网
在这里插入图片描述

import requests
import re
import time

HEADERS = {
    'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
}
def spider_page(url):
    response = requests.get(url,headers=HEADERS)
    text_raw = response.text
    titles=re.findall(r'<div\sclass="cont">.*?<b>(.*?)</b>',text_raw,re.DOTALL)
    dynasties=re.findall(r'<p\sclass="source">.*?<a.*?>.*?<a.*?>(.*?)</a>',text_raw,re.DOTALL)
    names=[]
    img_urls=[]
    text=re.findall(r'<p\sclass="source">.*?<a.*?>(.*?)</a>',text_raw,re.DOTALL)
    for text_item in text:
        img_url = re.search(r'<img src="(.*?)"', text_item)
        name = re.search(r'alt="(.*?)"', text_item)
        if img_url and name:
            names.append(name.group(1))
            img_urls.append(img_url.group(1))
            
        
    contents_pre=re.findall(r'<div\sclass="contson".*?>(.*?)</div>',text_raw,re.DOTALL)
    contents=[]
    for content_pre in contents_pre:
        content=re.sub(r'<.*?>|\n',"",content_pre)
        contents.append(content.strip())
    poems=[]
    for value in zip(titles,dynasties,names,contents,img_urls):
        title,dynastie,name,content,img_url=value
        poem={
            'title':title,
            'dynastie':dynastie,
            'author':name,
            'img_url':img_url,
            'content':content
        }
        poems.append(poem)
    return poems
def spider():
    poems=[]
    for x in range(1,11):
        print('第{}页正在爬取'.format(x))
        url='https://www.gushiwen.org/default_{}.aspx'.format(x)
        print(url)
        poems+=spider_page(url)
        time.sleep(1)
    for poem in poems:
        print(poem)
        print('='*40)
if __name__=='__main__':
    spider()
        

spider_page(url): 这个函数从给定的 URL 获取古诗。它首先发送一个 GET 请求到 URL,然后解析返回的 HTML 文档,提取出诗词的标题、朝代、作者、内容和图片 URL。
spider(): 这是主函数,它遍历诗词列表页的 URL,对每个诗词列表页调用 spider_page(url) 函数获取诗词信息,然后将所有诗词的信息打印出来。
这次利用的是re,上一篇用的是xpath和bs4。
结果:
在这里插入图片描述

注意不要爬太多。
最近新开了公众号,请大家关注一下。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

从零开始的奋豆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值