新手爬虫DAY1

embedded/2024/10/18 9:37:57/
 

这个错误信息表明在你的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.requestdef getParameter(url):  # 获取文档参数text_response = requests.get(url=url, headers=headers).textactual_page = int(re.search('actual_page:52 (\d+), //真实页数', text_response).group(1))  # 页数aid = re.search('aid:456032948 (\d+), //解密后的id', text_response).group(1)  # aidview_token = re.search('view_token:fTywuwW@c2Kh7QLBNdnrdxk0il5mF58mQT57vGVOPDc= \'(.*?)\'', text_response).group(1)  # view_tokenprint('actual_page:', actual_page, '\naid:', aid, '\nview_token:', view_token)return actual_page, aid, view_tokendef 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).textjson_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)


http://www.ppmy.cn/embedded/128419.html

相关文章

健康生活的重要性

在这个快节奏的时代,健康养生保健已成为我们不可忽视的生活课题。它不仅仅关乎日常饮食的均衡,更是心灵与身体的和谐共生。让我们深入探讨几个关键点,激发您对健康生活的思考与行动。 - 首先,均衡饮食是基础。 提到养生&#xff0…

每天五分钟深度学习pytorch:L1和L2范数、L1和L2归一化

本文重点 我们在另外一个专栏《机器学习和深度学习数学基础》中介绍了常用的范数,这里我们就不进行详细介绍了。这里我们只介绍,如何使用pytorch来计算L1、L2范数,以及如何计算L1和L2归一化。 L1和L2范数 torch.norm(input, p=fro, dim=None, keepdim=False, out=None, d…

【云岚到家】-day07-4-实战项目-优惠券活动-项目准备

【云岚到家-即刻体检】-day07-4-实战项目-优惠券活动-活动管理 1 模块需求分析1.1 业务流程1.2 界面原型1.3 业务模块 2 模块设计2.1 数据流2.2 表结构设计2.2.1 优惠券活动表设计2.2.2 优惠券表设计2.2.3 优惠券核销表2.2.4 优惠券退回表 2.3 创建数据库2.4 创建工程 1 模块需…

mac 录屏(视频+内外部声音)

mac 的 QuickTime Player 快捷键 cmd shift 5 自带录屏功能 但 QuickTime 本身只支持录制来自麦克风的声音,而不支持直接录制系统内部的音频。 为了实现 QuickTime Player 同时录制系统声音和麦克风声音,你可以通过安装第三方音频插件来达到目的。以…

HarmonyOS NEXT 应用开发实战(六、组件导航Navigation使用详解)

在鸿蒙应用开发中,Navigation 组件是实现界面间导航的重要工具。本文将介绍如何使用 Navigation 组件实现页面跳转及参数传递,确保你能轻松构建具有良好用户体验的应用。 当前HarmonyOS支持两套路由机制(Navigation和Router)&…

【Java】集合中单列集合详解(一):Collection与List

目录 引言 一、Collection接口 1.1 主要方法 1.1.1 添加元素 1.1.2 删除元素 1.1.3 清空元素 1.1.4 判断元素是否存在 1.1.5 判断是否为空 1.1.6 求取元素个数 1.2 遍历方法 1.2.1 迭代器遍历 1.2.2 增强for遍历 1.2.3 Lambda表达式遍历 1.2.4 应用场景 二、…

python项目实战——下载美女图片

python项目实战——下载美女图片 文章目录 python项目实战——下载美女图片完整代码思路整理实现过程使用xpath语法找图片的链接检查链接是否正确下载图片创建文件夹获取一组图片的链接获取页数 获取目录页的链接 完善代码注意事项 完整代码 import requests import re import…

【GaussDB】GaussDB 200介绍

简介 GaussDB 200是一个分布式并行关系型数据库系统。提供了以下功能: 标准SQL支持 支持标准的SQL-92/SQL:1999/SQL:2003规范,支持GBK和UTF-8字符集,支持SQL标准函数与分析函数,支持存储过程。 数据库存储管理功能 支持表空间&a…