006— 爬取第一考试网试题

在这里插入图片描述

import requests
import logging
import parsel
import re
import os#京东异步加载的反爬要求提供origin的信息
headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36 SE 2.X MetaSr 1.0'}logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(levelname)s: %(message)s')
TOTAL_PAGE = 115# 删除文件名中违禁字符串
def changer_title(name):new_name = re.sub(r'[/\\:*?"<>|\b]', '_', name)return new_name# 通用爬虫方法
# 定义一个名为scrape_page的函数,它接受一个参数url,表示要抓取的网页地址
def scrape_page(url):# 使用logging模块的info方法记录信息,表明正在获取指定url的源代码数据logging.info('正在获取源代码数据 %s', url)try:# 使用requests库的post方法向指定的url发送POST请求,headers和data变量应该在函数外部定义# 注意:这里的headers和data在函数内部未定义,直接使用可能导致错误response = requests.get(url, headers=headers)# 避免乱码进行转码response.encoding = 'gb2312'# 检查响应的状态码是否为200,表示请求成功if response.status_code == 200:# 如果请求成功,将响应的内容返回return response.text# 如果状态码不是200,记录错误日志,包含无效的状态码和urllogging.error('抓取时获取无效状态码 %s', response.status_code, url)# 捕获requests库抛出的所有异常(如网络问题、连接超时等)except requests.RequestException:# 记录错误日志,包含出错的url和完整的异常信息(通过exc_info=True)logging.error('抓取时发生错误 %s', url, exc_info=True)# 列表页
def scrape_index(page):index_url = f'https://www.shijuan1.com/a/sjsx7/list_124_{page}.html'return scrape_page(index_url)# 详情页
def parse_index(html):# 使用parsel库解析HTML内容selector = parsel.Selector(text=html)titles = selector.css('tr td:first-child a.title::text').getall()links = selector.css('tr td:first-child a.title::attr(href)').getall()for title, link in zip(titles, links):title = changer_title(title)link = 'https://www.shijuan1.com' + linkresponse = requests.get(url=link, headers=headers)response.encoding = 'gb2312'html_text = re.findall('<li><a href="(.*?)" target="_blank">本地下载</a></li>', response.text)[0]html_text = 'https://www.shijuan1.com' + html_textcontent = requests.get(url=html_text, headers=headers).contentwith open(html_file + title + '.rar', mode='wb') as f:f.write(content)# 如果当前运行的脚本是这个文件本身(而不是作为模块被其他脚本导入),则执行以下代码块
if __name__ == '__main__':# 创建文件夹html_file = '爬取内容/'if not os.path.exists(html_file):os.mkdir(html_file)for page in range(1, TOTAL_PAGE + 1):# 调用scrape_index函数抓取指定页面的HTML内容,page参数表示当前页码index_html = scrape_index(page)if index_html:parse_index(index_html)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/9765.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【分布式】分布式锁设计与Redisson源码解析

分布式锁 分布式锁是一种在分布式计算环境中用于控制多个节点&#xff08;或多个进程&#xff09;对共享资源的访问的机制。在分布式系统中&#xff0c;多个节点可能需要协调对共享资源的访问&#xff0c;以防止数据的不一致性或冲突。分布式锁允许多个节点在竞争访问共享资源…

【架构设计常见技术】

EJB EJB是服务器端的组件模型&#xff0c;使开发者能够构建可扩展、分布式的业务逻辑组件。这些组件运行在EJB容器中&#xff0c;EJB将各功能模块封装成独立的组件&#xff0c;能够被不同的客户端应用程序调用&#xff0c;简化开发过程&#xff0c;支持分布式应用开发。 IOC …

万字长文深度解读Movie Gen技术原理(5部曲):图像视频联合生成模型 (2)

​引言 简介 图像和视频基础模型 时间自编码器(TAE) 训练目标 骨干架构 文本嵌入和视觉-文本生成 空间上采样 模型扩展和训练效率 预训练 预训练数据 训练 微调STF 微调数据集创建 监督微调&模型平均 推理 推理提示重写 提高推理效率 评估 评估维度 评估基准…

基于MATLAB的农业病虫害识别研究

matlab有处理语音信号的函数wavread&#xff0c;不过已经过时了&#xff0c;现在处理语音信号的函数名称是audioread选取4.wav进行处理&#xff08;只有4的通道数为1&#xff09; 利用hamming窗设计滤波器 Ham.m function [N,h,H,w] Ham(fp,fs,fc)wp 2*pi*fp/fc;ws 2*pi*…

KEIL编译后直接生成bin文件

KEIL编译后直接生成bin文件 fromelf --bin -o "$LL.bin" "$LL.axf"表示在“与axf相同的文件夹”下生成bin文件。

解析广告联盟的玩法、功能及注意事项

广告联盟是一种商业模式&#xff0c;通过联合多个站点或平台&#xff0c;共同向广告商提供广告展示和推广服务。在这篇文章中&#xff0c;我将重点介绍什么是广告联盟&#xff0c;广告联盟的玩法、功能及注意事项&#xff0c;帮助商业模式策划师更好地了解和应用该模式。 一、…

GitHub中搜索项目方法

0 Preface/Foreword 1 搜索方法 1.1 项目介绍 如上截图&#xff0c;一个项目包含的基本信息&#xff1a; 项目名项目简介项目介绍Watch数量&#xff0c;接收邮件提醒Star数量&#xff0c;关注&#xff0c;subscribeFork数量&#xff0c;在repo中创建分支 1.2 限定项目名查找…

基于java+SpringBoot+Vue的洗衣店订单管理系统设计与实现

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven mysql5.7或8.0等等组成&#x…

简述kafka集群中的Leader选举机制

Kafka 集群中有一个 broker 的 Controller 会被选举为 Controller Leader&#xff0c;负责管理集群broker 的上下线&#xff0c;所有 topic 的分区副本分配和 Leader 选举等工作。 Controller 的信息同步工作是依赖于 Zookeeper 的。 &#xff08;1&#xff09;创建一个新的 t…

OpenGl绘制了一个雪人

#include <GL/glut.h> #include <math.h>const int n 1000; int q; //圆的半径 int m, p;//圆心 const GLfloat R 0.5f; const GLfloat Pi 3.1415926536f;//初始化OpenGL void init(void) {glClearColor(0.0f, 0.0f, 0.0f, 0.0f);//设置背景颜色glShadeModel(G…

Golang进阶

1.面向对象 1.1.golang语言面向对象编程说明 Golang 也支持面向对象编程(OOP)&#xff0c;但是和传统的面向对象编程有区别&#xff0c;并不是纯粹的面向对象语言。所以我们说 Golang 支持面向对象编程特性是比较准确的。Golang 没有类(class)&#xff0c;Go 语言的结构体(st…

kafka面试夺命连环三十问(上篇)

1、kafka消息发送的流程&#xff1f; 在消息发送的过程中&#xff0c;涉及到两个线程--main线程和sender线程。在main线程中创建了一个双端队列RecordAccumulator。main线程将消息发送给RecordAccumulator&#xff0c;然后sender线程不断从双端队列RecordAccumulator 拉取消息发…

【linux】再谈网络基础(二)

8. 再谈端口号 &#xff08;一&#xff09;与协议之间的关系 端口号(Port)标识了一个主机上进行通信的不同的应用程序 在TCP/IP协议中, 用 "源IP", "源端口号", "目的IP", "目的端口号", "协议号" 这样一个五元组来标识…

关键词策略的有效运用提升内容价值和搜索排名的关键

内容概要 在当今的数字时代&#xff0c;关键词策略是确保内容创作成功的重要基础。无论是个人博客还是商业网站&#xff0c;合适的关键词不仅能够提升文章的可见性&#xff0c;还能显著影响搜索引擎的排名。合理运用关键词&#xff0c;有助于吸引目标读者&#xff0c;将他们引…

1.62亿元!812个项目立项!上海市2024年度“科技创新行动计划”自然科学基金项目立项

本期精选SCI&EI ●IEEE 1区TOP 计算机类&#xff08;含CCF&#xff09;&#xff1b; ●EI快刊&#xff1a;最快1周录用&#xff01; 知网(CNKI)、谷歌学术期刊 ●7天录用-检索&#xff08;100%录用&#xff09;&#xff0c;1周上线&#xff1b; 免费稿件评估 免费匹配期…

【Ant Design Pro】不想用轻量的hook就喜欢用dva的数据状态管理

就像TS是JS的超集一样&#xff0c;antdpro框架也类似&#xff0c;底层也是用dva来构建的。关于数据管理&#xff0c;官方还是建议我们使用轻量的hooks方法来进行操作使用。 使用dva实现数据状态管理效果 框架中的数据管理模式 简单的数据共享 对于简单的应用&#xff0c;不需…

requestAnimationFrame与setInterval的抉择

&#x1f64c; 如文章有误&#xff0c;恳请评论区指正&#xff0c;谢谢&#xff01; ❤ 写作不易&#xff0c;「点赞」「收藏」「转发」 谢谢支持&#xff01; 背景 在之前的业务中遇到有 JS 动画的实现场景&#xff0c;但当电脑打开太多网页或是同时启动很多应用时&#xff0c…

【C++练习】使用海伦公式计算三角形面积

编写并调试一个计算三角形面积的程序 要求&#xff1a; 使用海伦公式&#xff08;Herons Formula&#xff09;来计算三角形的面积。程序需要从用户那里输入三角形的三边长&#xff08;实数类型&#xff09;。输出计算得到的三角形面积&#xff0c;结果保留默认精度。提示用户…

附件商户,用户签到,uv统计功能(geo,bitmap,hyperloglog结构的使用)

目录 附近商户一&#xff1a;Geo数据结构二&#xff1a;附近商户搜索 用户签到一&#xff1a;BitMap功能演示二&#xff1a;实现签到功能三&#xff1a;统计签到功能 uv统计一&#xff1a;hyperloglog的用法二&#xff1a;测试百万数据的tji二&#xff1a;测试百万数据的tji 附…

【LuatOS】修改LuatOS源码为PC模拟器添加高精度时间戳库timeplus

0x00 缘起 LuatOS以及Lua能够提供微秒或者毫秒的时间戳获取工具&#xff0c;但并没有提供获取纳秒的工具。通过编辑LuatOS源码以及相关BSP源码&#xff0c;添加能够获取纳秒的timeplus库并重新编译&#xff0c;以解决在64位Windows操作系统中LuatOS模拟器获取纳秒的问题&#…