AI网络爬虫-从当当网批量获取图书信息

news2024/7/4 4:44:50

工作任务和目标:用户输入一个图书名称,然后程序自动从当当网批量获取图书信息

查看相关元素在源代码中的位置:

第一步:在deepseek中输入提示词:

你是一个Python爬虫专家,一步步的思考,完成以下网页爬取的Python脚本任务:

用户输入一个关键词,接受这个关键词,保存为变量{book};

在F:\aivideo文件夹里面新建一个Excel文件:{book}.xlsx

打开网页:https://search.dangdang.com/?key={book}&act=input&page_index={pagenumber}&sort_type=sort_sale_amt_desc#J_tab

({pagenumber}这个变量的值是从1到100);

网页的编码为charset=GB2312;

解析网页的源代码,并打印输出;

定位class="bigimg" 的ul 标签;

在定位ul 标签内定位所有的li 标签,

在li 标签内定位class="pic"的a标签,提取其title属性值,作为图书标题,保存到{book}.xlsx的第1列;

在li 标签内定位class="detail"的p标签,提取其文字内容,作为图书简介,保存到{book}.xlsx的第2列;

在li 标签内定位class="price">的p标签,然后定期p标签中 class="search_now_price"的span标签,提取其内容,作为图书价格,保存到{book}.xlsx的第3列;

在li 标签内定位name="itemlist-review"的a标签,提取其文字内容,作为图书评论数量,保存到{book}.xlsx的第4列;

在li 标签内定位 class="search_book_author"的p标签,定位p标签中的第1个a标签,提取其 title属性值,作为图书作者,保存到{book}.xlsx的第5列;定位p标签中的第2个a标签,提取其 title属性值,作为图书出版社,保存到{book}.xlsx的第6列;定位p标签中的第2个span标签,提取其内容,作为出版时间,保存到{book}.xlsx的第7列;

注意:

每一步都要输出相关信息到屏幕;

设置请求头,来应对反爬虫机制;

每解析一个网页后,随机等待1-10秒;

如果某个元素不存在,就跳过这个数据点。

DataFrame.append 方法在 pandas 1.4.0 版本中已经被弃用,并且在后续版本中被移除。为了解决这个问题,我们可以使用 concat 函数来代替 append

所有的代码整合在一起,不要一段一段的输出;

第二步,查看审阅deepseek生成的Python代码:
import time

import random

import requests

from bs4 import BeautifulSoup

import pandas as pd

# 设置请求头

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'}

# 用户输入关键词

book = input("请输入关键词: ")

# 新建Excel文件路径

excel_file_path = f"F:\\aivideo\\{book}.xlsx"

# 初始化DataFrame

df = pd.DataFrame(columns=['标题', '简介', '价格', '评论数量', '作者', '出版社', '出版时间'])

# 遍历页面

for pagenumber in range(1, 101):

# 打开网页

url = f"https://search.dangdang.com/?key={book}&act=input&page_index={pagenumber}&sort_type=sort_sale_amt_desc#J_tab"

print(f"正在打开网页: {url}")

# 发送HTTP请求

response = requests.get(url, headers=headers)

response.encoding = 'GB2312' # 设置编码为GB2312

# 解析网页

soup = BeautifulSoup(response.text, 'html.parser')

# 定位class="bigimg"的ul标签

ul_tag = soup.find('ul', class_='bigimg')

# 如果ul标签存在,定位所有的li标签

if ul_tag:

li_tags = ul_tag.find_all('li')

# 遍历li标签并提取信息

for li in li_tags:

try:

# 提取图书信息

title = li.find('a', class_='pic').get('title')

description = li.find('p', class_='detail').text.strip()

price = li.find('p', class_='price').find('span', class_='search_now_price').text.strip()

review_count = li.find('a', attrs={'name': 'itemlist-review'}).text.strip()

author = li.find('p', class_='search_book_author').find_all('a')[0].get('title')

publisher = li.find('p', class_='search_book_author').find_all('a')[1].get('title')

publish_time = li.find('p', class_='search_book_author').find_all('span')[1].text.strip()

# 保存到DataFrame

df = pd.concat([df, pd.DataFrame([[title, description, price, review_count, author, publisher, publish_time]],

columns=['标题', '简介', '价格', '评论数量', '作者', '出版社', '出版时间'])],

ignore_index=True)

except AttributeError:

print("跳过一个数据点")

continue

# 随机等待

time.sleep(random.randint(1, 10))

# 保存到Excel文件

df.to_excel(excel_file_path, index=False)

print(f"数据已保存到: {excel_file_path}")

第三步,打开visual studio code软件,新建一个py文件,将Python代码复制到这个文件中,按下F5键运行程序:

程序运行结果:

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

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

相关文章

Linux定时计划

定时计划 一、计划任务种类 突发性:临时决定只执行一次的任务 at:处理执行一次任务就结束定时性:每隔一定时间需要重复执行此命令 crontab:指定任务,按照设定的周期一直循环执行二、作用 定时任务可以用于自动备份…

AI办公自动化:用kimi批量将word文档部分文件名保存到Excel中

文件夹中有很多个word文档,现在只要英文部分的文件名,保存到一个Excel文件中。 可以在kimi中输入提示词: 你是一个Python编程专家,要完成一个编写Python脚本的任务,具体步骤如下: 打开文件夹:…

51单片机-实机演示(LED,呼吸,蜂鸣器)

一,LED点灯 #include "REG52.H"sbit LED P0^0;void main() {LED 1;while (1){} }控制P00输出。 烧录 重启 再换个引脚插入的位置。 二,蜂鸣器 代码,和烧录步骤同上。 只需要换一下,引脚位置即可 三,呼…

jmeter之MD5加密接口请求教程

前言: 有时候在项目中,需要使用MD5加密的方法才可以登录,或者在某一个接口中遇到 登录获取token后才可以进行关联,下面介绍下遇到的常见使用 一、第一种方法:使用jmeter自带的函数助手digest 选择工具,选择…

ssm整合教程

目录 写在前面 目录结构 添加依赖 web.xml jdbc.properties spring.xml mybatis.xml springmvc.xml pom.xml额外配置 last:写个测试样例看看整合成功没。 User.java UserDao.java(接口) UserController.java UserService.java UserServiceImpl.java …

人工智能在鼻咽癌领域的最新应用|【医学AI·论文速递·05-27】

小罗碎碎念 2024-05-27|文献速递 接下来打算把人工智能在主流癌种治疗中的应用,每天和大家做一期推送,方便大家了解各自领域最新的一个进展。 因为小罗的课题是鼻咽癌相关的,所以这一期推文就先从人工智能在鼻咽癌中最新的应用开…

MyBatis框架的使用:mybatis介绍+环境搭建+基础sql的使用+如何使用Map传入多个参数+返回多个实体用List或者Map接收+特殊sql的使用

MyBatis框架的使用:mybatis介绍环境搭建基础sql的使用如何使用Map传入多个参数返回多个实体用List或者Map接收特殊sql的使用 一、MyBatis介绍1.1 特性1.2 下载地址1.3 和其它持久层技术对比 二、搭建环境2.1配置maven2.2 创建mybatis配置文件2.3 搭建测试环境 三、基…

【CTF Web】CTFShow web7 Writeup(SQL注入+PHP+进制转换)

web7 1 阿呆得到最高指示&#xff0c;如果还出问题&#xff0c;就卷铺盖滚蛋&#xff0c;阿呆心在流血。 解法 注意到&#xff1a; <!-- flag in id 1000 -->拦截很多种字符&#xff0c;连 select 也不给用了。 if(preg_match("/\|\"|or|\||\-|\\\|\/|\\*|\…

宿舍管理系统代码详解(操作界面)

目录 一、前端代码 1.样式展示 2.代码详解 <1>主页面列表部分 &#xff08;1&#xff09;template部分 &#xff08;2&#xff09;script部分 <2>新增页面 &#xff08;1&#xff09;template部分 &#xff08;2&#xff09;script部分 <3>修改页面…

C++初阶学习第九弹——探索STL奥秘(四)——vector的深层挖掘和模拟实现

string&#xff08;上&#xff09;&#xff1a;C初阶学习第六弹——探索STL奥秘&#xff08;一&#xff09;——标准库中的string类-CSDN博客 string&#xff08;下&#xff09;&#xff1a;C初阶学习第七弹——探索STL奥秘&#xff08;二&#xff09;——string的模拟实现-CS…

访问tomcat的webapps下war包,页面空白

SpringBootvue前后端分离项目&#xff0c;Vue打包到SpringBoot中 常见问题 错误一&#xff1a;war包访问页面空白 前提&#xff1a;项目在IDEA里配置tomcat可以启动访问项目 但是&#xff0c;打成war包拷贝到tomcat webapps下能启动却访问不了&#xff0c;页面显示空白 原…

孜然多程序授权系统V2.0开源

源码介绍 孜然一款多程序授权系统&#xff0c;支持自定义权限价格/新增程序配置等支持自动生成授权代码在线签到在线充值多支付接口IP/域名云黑文章系统&#xff08;富文本编辑器&#xff09;卡密功能一键云黑&#xff08;挂个大马/一键黑页/一键删库/一键删源码&#xff09; …

linux 阿里云服务器安装ImageMagick和php扩展imagick

操作系统版本 Alibaba Cloud Linux 3.2104 LTS 64位 # 1.安装ImageMagick yum install -y ImageMagick ImageMagick-devel # 没有pecl要先安装pecl 和头文件 sudo yum install php-devel # 2.pecl 安装扩展 pecl install imagick #寻找所有php.ini文件 find / -name php.…

基于EV54Y39A PIC-IOT WA的手指数量检测功能开发(MPLAB+ADC)

目录 项目介绍硬件介绍项目设计开发环境及工程参考总体流程图硬件基本配置光照传感器读取定时器检测逻辑 功能展示项目总结 &#x1f449; 【Funpack3-2】基于EV54Y39A PIC-IOT WA的手指数量检测功能开发 &#x1f449; Github: EmbeddedCamerata/PIC-IOT_finger_recognition 项…

42-5 应急响应之日志分析

一、Windows 系统日志排查 1)日志概述 在 Windows 2000 专业版、Windows XP 和 Windows Server 2003 中: 系统日志的位置为 C:\WINDOWS\System32\config\SysEvent.evt安全性日志的位置为 C:\WINDOWS\System32\config\SecEvent.evt应用程序日志的位置为 C:\WINNT\System32\c…

在Windows中安装Redis

一、下载Redis github链接&#xff1a;https://github.com/redis-windows/redis-windows/releases 二、安装 解压后点击start.bat文件即可启动服务 新开一个cmd窗口进入安装了Redis的文件夹输入redis-cli.exe -h 127.0.0.1 -p 6379连接Redis&#xff0c;见如下结果便是成功&…

第六节:带你全面理解vue3 浅层响应式API: shallowRef, shallowReactive, shallowReadonly

前言 前面两章,给大家讲解了vue3中ref, reactive,readonly创建响应式数据的API, 以及常用的计算属性computed, 侦听器watch,watchEffect的使用 其中reactive, ref, readonly创建的响应式数据都是深层响应. 而本章主要给大家讲解以上三个API 对应的创建浅层响应式数据的 API,…

VUE3 学习笔记(3):VUE模板理念、属性绑定、条件渲染、列表渲染

准备 1.清空不必要的项目文件 项目/src/assets/ 目录文件清空 项目/src/components/ 目录文件清空 删除main.js 的css引用 App.vue 代码如下 <template> </template> <script>//注意这里默认有一个setup 去掉 </script> 运行一下无错误提示就可以了…

【教学类-58-05】黑白三角拼图05(2-10宫格,每个宫格随机1张-6张,带空格纸,1页3张黑白3张白卡)

背景需求&#xff1a; 【教学类-58-04】黑白三角拼图04&#xff08;2-10宫格&#xff0c;每个宫格随机1张-6张&#xff0c;带空格纸&#xff0c;1页6张黑白&#xff0c;1张6张白卡&#xff09;-CSDN博客文章浏览阅读582次&#xff0c;点赞16次&#xff0c;收藏3次。【教学类-58…