爬虫小练习:爬取内涵段子指定页数段子(可控制是否继续爬取)

2024-06-04 07:48

本文主要是介绍爬虫小练习:爬取内涵段子指定页数段子(可控制是否继续爬取),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

import urllib.request
import re# pattern1 = re.compile('<a\shref="(.*?)"\sclass="title"\stitle')  匹配完整段子内容链接
#
# content_url_list = pattern1.findall(html)
#
# pattern2 = re.compile('</p>(.*?)<div\sclass="ad610">',re.S)  匹配点开段子标题后完整段子的内容
#
# content_list = pattern2.findall(html)
#
# http://www.neihan8.com/article/index_3.html
#
# User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36class Spider:def __init__(self,page):self.page = pageself.switch = True  # 爬取开关,决定用户是否继续爬取页面信息def loadPage(self):'''下载页面'''# 下载第一部分页面来获取完整段子内容的连接,且打开链接print("页面下载中......")if self.page == "1":url = "http://www.neihan8.com/article/index.html"else:url = "http://www.neihan8.com/article/index_"+ self.page +".html"headers = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36"}request = urllib.request.Request(url,headers=headers)response = urllib.request.urlopen(request)html = response.read().decode("utf-8")# print(html)pattern1 = re.compile('<a\shref="(.*?)"\sclass="title"\stitle')content_url_list = pattern1.findall(html)print("页面下载完成!")for content_url in content_url_list:# print(url)content_url = "http://www.neihan8.com" + content_urlrequest = urllib.request.Request(content_url, headers=headers)response = urllib.request.urlopen(request)html = response.read().decode("utf-8")pattern2 = re.compile('</p>(.*?)<div\sclass="ad610">', re.S)content_list = pattern2.findall(html)self.dealPage(content_list)def dealPage(self,content_list):'''处理每页的段子信息'''for content in content_list:# print(content)# print("-" * 30)content = content.replace('<p>','').replace('</p>','')# print(content)# print("-" * 30)self.writPage(content)def writPage(self,content):'''把段子信息写入文件中'''print("文件写入中......")with open("内涵段子第"+ self.page +"页集合.txt","a") as f:f.write(content)f.write("\n" + ("-"*50))def work(self):'''控制爬虫如何运行'''print("文件写入完成!感谢使用!")while self.switch:command = input("如果确定继续爬取,请按回车(退出按q):")if command == "q":self.switch = Falseelse:page_num = input("请输入要再次爬取的页码:")self.page = page_numself.loadPage()if __name__ == '__main__':page_num = input("请输入要爬取的页码:")Spider = Spider(page_num)Spider.loadPage()Spider.work()

这篇关于爬虫小练习:爬取内涵段子指定页数段子(可控制是否继续爬取)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1029477

相关文章

浅析Spring如何控制Bean的加载顺序

《浅析Spring如何控制Bean的加载顺序》在大多数情况下,我们不需要手动控制Bean的加载顺序,因为Spring的IoC容器足够智能,但在某些特殊场景下,这种隐式的依赖关系可能不存在,下面我们就来... 目录核心原则:依赖驱动加载手动控制 Bean 加载顺序的方法方法 1:使用@DependsOn(最直

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

Spring如何使用注解@DependsOn控制Bean加载顺序

《Spring如何使用注解@DependsOn控制Bean加载顺序》:本文主要介绍Spring如何使用注解@DependsOn控制Bean加载顺序,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录1.javascript 前言2. 代码实现总结1. 前言默认情况下,Spring加载Bean的顺

基于Python开发Windows屏幕控制工具

《基于Python开发Windows屏幕控制工具》在数字化办公时代,屏幕管理已成为提升工作效率和保护眼睛健康的重要环节,本文将分享一个基于Python和PySide6开发的Windows屏幕控制工具,... 目录概述功能亮点界面展示实现步骤详解1. 环境准备2. 亮度控制模块3. 息屏功能实现4. 息屏时间

Java实现删除文件中的指定内容

《Java实现删除文件中的指定内容》在日常开发中,经常需要对文本文件进行批量处理,其中,删除文件中指定内容是最常见的需求之一,下面我们就来看看如何使用java实现删除文件中的指定内容吧... 目录1. 项目背景详细介绍2. 项目需求详细介绍2.1 功能需求2.2 非功能需求3. 相关技术详细介绍3.1 Ja

Python pip下载包及所有依赖到指定文件夹的步骤说明

《Pythonpip下载包及所有依赖到指定文件夹的步骤说明》为了方便开发和部署,我们常常需要将Python项目所依赖的第三方包导出到本地文件夹中,:本文主要介绍Pythonpip下载包及所有依... 目录步骤说明命令格式示例参数说明离线安装方法注意事项总结要使用pip下载包及其所有依赖到指定文件夹,请按照以

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.