新手爬虫DAY1

 

这个错误信息表明在你的Python程序中,re.search() 函数没有找到预期的匹配项,因此返回了 None。当你尝试在 None 对象上调用 group(1) 方法时,Python 抛出了一个 AttributeError

具体来说,错误发生在 pc.py 文件的第6行,你试图从一个字符串 text_response 中提取一个数字,这个数字位于 actual_page:52 (\d+), //真实页数 这个模式的匹配结果中。但是,re.search() 没有找到这个模式,所以返回了 None

要解决这个问题,你可以采取以下几个步骤:

  1. 检查 text_response 内容
    确保 text_response 包含你期望搜索的字符串。可能的情况是,text_response 的内容不是你预期的,或者格式有变。

  2. 验证正则表达式
    确保你的正则表达式 actual_page:52 (\d+), //真实页数 是正确的。这里的 \d+ 是用来匹配一个或多个数字的,但前面的 actual_page:52 看起来像是硬编码的数字,这可能不是通用的匹配方式。如果 actual_page 后面的数字(这里是52)是变化的,那么你的正则表达式需要调整以匹配变化的数字。

  3. 处理 None 返回值
    在调用 group(1) 之前,你应该检查 re.search() 的返回值是否为 None。如果是 None,你可以添加一些错误处理逻辑,比如打印一个错误消息或者设置一个默认值

  4. 调整正则表达式以匹配更多情况
    如果 actual_page 后面的数字是变化的,你可以使用更通用的模式,如 actual_page:\d+ (\d+), //真实页数

通过上述步骤,你应该能够定位问题并修正它。如果问题仍然存在,可能需要进一步检查 text_response 的来源和格式。

代码:import requests, json, re, time, urllib.request


def getParameter(url):  # 获取文档参数
    text_response = requests.get(url=url, headers=headers).text
    actual_page = int(re.search('actual_page:52 (\d+), //真实页数', text_response).group(1))  # 页数
    aid = re.search('aid:456032948 (\d+), //解密后的id', text_response).group(1)  # aid
    view_token = re.search('view_token:fTywuwW@c2Kh7QLBNdnrdxk0il5mF58mQT57vGVOPDc= \'(.*?)\'', text_response).group(1)  # view_token
    print('actual_page:', actual_page, '\naid:', aid, '\nview_token:', view_token)
    return actual_page, aid, view_token


def requests_data(parameter, page):  # 请求数据
    url = 'https://openapi.book118.com/getPreview.html'
    params = {
        'project_id': '1',
        'aid': parameter[1],
        'view_token': parameter[2],
        'page': page,
    }
    response = requests.get(url=url, headers=headers, params=params).text
    json_data = re.search('jsonpReturn\((.*?)\);', response).group(1)  # 使用正则表达式所需数据
    data = json.loads(json_data)['data']
    # if data.get(str(page)) == '':  # 根据需求使用
    #     print('数据加载失败,重新发出请求')
    #     time.sleep(1)
    #     return requests_data(parameter, page)
    # time.sleep(1)
    return get_data(data)


def get_data(data):  # 下载数据
    for i in data.items():  # i[0]为页数,i[1]为网址
        img_url = 'https:' + i[1]
        # urllib.request.urlretrieve(url=img_url, filename=r'D:/yuanChuangLi/{}.png'.format(i[0]))  # 下载图片
        print(i[0], img_url)


if __name__ == '__main__':
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'}
    text_url = input('输入网址:')
    parameter = getParameter(text_url)
    for page in range(1, parameter[0], 6):
        requests_data(parameter, page)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT开发--QT基础

第0章 QT工具介绍 0.1 编译工具 uic,rcc,moc,qmake 都是 qt 的工具 uic 主要是 编译 .ui文件 -> ui_xxx.h //.ui文件 .h rcc 主要是 编译 资源文件.qrc文件 -> xxx.rcc …

某电子元器件企业人力资源管理体系搭建咨询项目

某电子元器件企业人力资源管理体系搭建咨询项目 ——搭建管理体系,梳理工作流程 【导读】 与其他同类企业一样,该电子公司面临招不到合适的人才、留不住人才的难题,自然也加大了人力资源管理的成本。公司人事部员工的工作基本上陷入了“招…

OpenUAV:首个专为现实无人机视觉语言导航设计的大规模轨迹数据集,由大约 12k 个轨迹组成,涵盖了多种环境和复杂的飞行动态。

2024-10-10,由北京航空航天大学人工智能研究所、香港中文大学MMLab以及感知与交互智能中心共同创建了OpenUAV数据集,首个专为现实无人机(UAV)视觉语言导航(VLN)任务设计的大型轨迹数据集,该数据…

波司登超1000+门店用钉钉Teambition开店管理,实现拓店“自动化”

门店开在哪里?什么时候装修?什么时候开门迎客? 在瞬息万变的零售行业,门店作为连接产品和消费者、融合线上和线下的核心场景,其运营效率和管理策略至关重要。 近日,波司登正式启用钉钉项目 Teambition&am…

【uniapp】打包成H5并发布

目录 1、设置配置mainifest.sjon 1.1 页面标题 1.2 路由模式 1.3 运行的基础路径 2、打包 2.1 打包入口 2.2 打包成功 2.3 依据目录找到web目录 3、 将web目录整体拷贝出来 4、上传 4.1 登录uniapp官网注册免费空间 4.2 上传拷贝的目录 4.3 检查上传是否正确 5、…

内容共创与UGC:TikTok腰部达人推动品牌海外传播新风向

当今数字营销的新时代,内容共创已成为品牌与用户之间构建深度互动的关键方式。在TikTok上,腰部达人通过UGC等形式,不仅能增强品牌与用户的互动性和参与度,还能够帮助品牌在海外市场上实现声量和知名度的提升。本文Nox聚星将和大家…

嵌入式开发学习日记——认识指针及和数组函数的联系(c语言)

一、指针的定义 一般格式: 数据类型 * 指针变量名 [初始地址值]; 数据类型是指针所指向的地址处的数据类型,如 int、char、float 等。 符号 * 用于通知系统,这里定义的是一个指针变量,通常跟在类型关键字的后面,表示…

从入门到高手的99个Python案例

想掌握Python编程语言,从零基础的小白晋升为大神?没问题!接下来我们将以轻松有趣的方式,逐一解锁Python学习路上的99个关键知识点。每一步都将结合实际应用场景、函数功能解析及简洁代码演示,带你深度领略Python的魅力…

为什么火箭回收技术如此重要?——以马斯克的星舰为例

引言 随着人类对太空探索的深入,火箭技术成为了人类通往星辰大海的关键工具。在这个领域,SpaceX 的火箭回收技术近年来取得了重要突破,尤其是其 “筷子夹火箭” 的设计进一步引发了广泛讨论。2024年10月13日,马斯克的第五次星舰试…

Flink窗口分配器WindowAssigner

前言 Flink 数据流经过 keyBy 分组后,下一步就是 WindowAssigner。 WindowAssigner 定义了 stream 中的元素如何被分发到各个窗口,元素可以被分发到一个或多个窗口中,Flink 内置了常用的窗口分配器,包括:tumbling wi…

而今再看unet

从最开始听到人用Unet左inpainting,再到自己使用Unet做图像去噪任务,虽然没有用Unet做过分割,但Unet也可以称得上是老朋友了。现在回头再看Unet,温故知新,一些魔鬼真就藏在一些细节之中。 structure 结构由forward函数…

【C++】:工厂模式

欢迎来到 破晓的历程的 博客 ⛺️不负时光,不负己✈️ 文章目录 简单工厂模什么是简单工厂模式?如何实现简单工厂模式? 工厂方法抽象工厂模式总结简单工厂模式工厂方法抽象工厂「Abstract Factory」 简单工厂模 什么是简单工厂模式&#xf…

【计算机网络】详解数据链路层数据帧Mac地址ARP协议

一、以太网帧 "以太网" 不是一种具体的网络,而是一种技术标准;既包含了数据链路层的内容,也包含了一些物理层的内容 。例如:规定了网络拓扑结构,访问控制方式,传输速率等;例如以太网中…

【智能算法应用】引力搜索算法求解二维路径规划问题

摘要 引力搜索算法(GSA)是一种基于引力学说的启发式算法,用于解决复杂的优化问题。本文应用 GSA 于二维路径规划问题,通过优化路径来避开障碍物并达到目标点。实验结果表明,GSA 在路径规划中具有良好的表现&#xff0…

课程作业管理系统的设计与实现(论文+源码)_kaic

摘 要 随着科学技术的飞速发展,社会的方方面面、各行各业都在努力与现代的先进技术接轨,通过科技手段来提高自身的优势,课程作业管理系统当然也不能排除在外。课程作业管理系统是以实际运用为开发背景,运用软件工程原理和开发方法…

基于Docker安装Grafana及其基本功能

Grafana是一款用Go语言开发的开源数据可视化工具,可以做数据监控和数据统计,带有告警功能。 拉取Grafana镜像 docker pull grafana/grafana 运行镜像 docker run -d -p 3000:3000 --namegrafana grafana/grafana 打开浏览器,访问 http://l…

|动漫爬取|001_djangodjango基于Spark的国漫推荐系统的设计与实现2024_tpd6q1o4

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

to_sql报错not all arguments converted during string formatting

报错: DatabaseError: Execution failed on sql SELECT name FROM sqlite_master WHERE typetable AND name?;: not all arguments converted during string formattingb 报错的代码如下: import pymysql import pandas as pd con pymysql.connect(…

【小技能】一、windows的远程桌面连接

一、简介 windows系列都带有远程桌面连接的程序;学会配置并使用此程序,可以避免让我们每次连接一台新的电脑时去安装远程软件。所以特地前来写下这篇文章,让自己以后忘记了可以来瞧瞧。 二、配置被远程电脑 步骤一:开启远程桌…

诺贝尔物理学奖:机器学习与神经网络的时代

前言 2024年,诺贝尔物理学奖首次颁发给机器学习与神经网络领域的研究者,标志着科学评奖标准的历史性转变。这一决定引发了学术界的广泛关注,也促使人们深入思考科学研究及其应用的未来。 机器学习与物理学的交融 传统上,诺贝尔物…