自写第一个简单的爬虫程序(教程来自B站)

自写第一个简单的爬虫程序(教程来自B站)

由于之前有一点爬虫基础,但是无奈太懒,一直都没有进行深入学习,更没有实战,昨天心血来潮看了B站的视屏,爬取对象是一个小说网站的一部小说,将该章节和文本写入以小说名命名的txt文件里,教程视屏录制时间比较早,加之该网站进行了一定的反爬手段,使得与教程的代码有些出入,索性自己爬了一个,在原代码上做了些许调整,在这次学习中用到了re模块的findall函数,以及sub函数,学习了正则表达式的简单运用,以及python下文件的写入。

import requests
import re
#由于该网站有一定的反爬机制,故用Headers头模仿谷歌Chrome进行访问
req=requests.get("https://www.jingcaiyuedu.com/novel/BbDze4/list.html",headers={'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"})
req.encoding="UTF-8"
list_text=req.text#爬取小说目录的源代码
novel_info=re.findall(r'<dd class="col-md-4">.*?<a href="(.*?)">(.*?)<.*?</dd>',list_text,re.S) #获取小说章节以及相对应的跳转的url片段
novel_name=re.findall(r'<meta property="og:title" content="(.*?)"/>',list_text,re.S)#获取小说名字
#将小说写入文本
with open('%s.txt'%novel_name[0],'w') as f:
    for novel_Eachinfo in novel_info:
        Each_url,Each_title=novel_Eachinfo
        #获取完整的url
        Each_Realurl="https://www.jingcaiyuedu.com%s"%Each_url
        req1=requests.get(Each_Realurl,headers={'User-Agent': "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36"})
        req1.encoding = "UTF-8"
        Each_content=re.findall(r'最快更新.*?<p>(.*?)<div>',req1.text,re.S)
        #由于后续章节需要公众号连接无法直接爬取,故增加判断是否返回空列表
        if (Each_content!=[]):
            #数据清洗,删除段落符号,使用re模块的sub函数,删除字符串
            Each_content_cleaned=re.sub(r'<.*?>',"",Each_content[0])
            f.write(Each_title)
            f.write("\n"*2)
            f.write( Each_content_cleaned)
            f.write("\n"*2)
print("successed")

结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值