首页 > 其他分享 >当当网图书信息获取

当当网图书信息获取

时间:2024-12-30 14:09:40浏览次数:1  
标签:info search get 当当网 li 获取 book 图书 ul

当当网图书信息获取

虽然现在是信息时代,大多数人都会选择电子读物,但是纸质图书仍是我们大多数学生不可或缺的.

准备工作:

​ 查看网站允许抓取权限:进行网页抓取时必须遵守网站的robots.txt规则.频繁地请求会给网站服务器带来负担,导致违反服务条款导致IP封禁

https://www.dangdang.com/robots.txt查看哪些页面不允许获取

分析目标页面
  • 确定要获取的信息(书籍名称、出版社、价格、评价数量等)
  • 使用浏览器开发者工具查看这些信息在HTML中如何表示
  • 查看分页机制,了解如何构建URL实现分页
分页链接
#首页
https://search.dangdang.com/?key=Java&act=input
key=Java表示该链接是接收关键字搜索后的链接
#第二页
https://search.dangdang.com/?key=Java&act=input&page_index=2
#第三页
https://search.dangdang.com/?key=Java&act=input&page_index=3

通过观察发现.除了首页链接意外,后续链接page_index=页码,这就很方便构建链接了.对于首页链接我们可以尝试输入1也是能够生成的,当然也可以在循环时候判断,如果i=1那么链接为https://search.dangdang.com/?key=Java&act=input

正式分析

通过浏览器开发工具我们可以快速定位到所需的信息都存在于<ul class='bigimg' id='component_59'>下的li标签中.所以我们只需要获取到页面的源码之后通过定位语句获取到所有的li标签即可,之后对其进行循环遍历分别提取出所需的信息清洗,最后写入保存

首先是书名,点击开发者工具会发现书名的结构如下图所示:li -> p -> a标签中的title文本即是所需的书名

其次是价格,同样的操作会发现其结构li -> p.price -> span中即是价格

紧接着是出版社,其结构li -> p.search_book_author -> span[3] -> a

最后是评价数,结构li -> p.search_star_line -> span -> a

保存数据

将获取数据添加到列表中使用pandas统一进行格式化写入

完整代码
import pandas as pd
import parsel, requests, time


def get_html(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36"
    }
    response = requests.get(url, headers=headers)
    if response.status_code == 200:
        return response.text
    return None


book_info = []
B_title = ['书名', '售价', '出版社', '评论']


def get_book_info():
    sel = parsel.Selector(get_html(url))
    ul_list = sel.css('ul.bigimg > li')
    for ul in ul_list:
        book_title = ul.css('p.name > a::attr(title)').get()
        book_price = ul.css('p.price > span::text').get()
        book_publish = ul.css('p.search_book_author span:nth-of-type(3) > a::text').get()  # css选择器独特写法,意思是选择第三个span标签
        book_review = ul.css('p.search_star_line > a::text').get()
        book_info.append([
            book_title,
            book_price,
            book_publish,
            book_review
        ])

for i in range(1, 10):
    print('正在爬取第%s页' % i)
    url = f"https://search.dangdang.com/?key=python&act=input&page_index={i}"
    get_html(url)
    get_book_info()
    time.sleep(1)
book_info = pd.DataFrame(columns=B_title, data=book_info)
book_info.to_excel('book_info.xlsx', index=False)

标签:info,search,get,当当网,li,获取,book,图书,ul
From: https://www.cnblogs.com/yujie168/p/18640906

相关文章

  • 获取文件路径总结
    packagecom.javasm.cotroller;importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.PathVariable;importorg.springframework.web.bind.annotation......
  • 基于python大数据的图书销售系统
    标题:基于Python大数据的图书销售系统研究内容:1.摘要摘要:随着信息技术的不断发展,大数据在各个领域的应用越来越广泛。本文旨在研究基于Python大数据的图书销售系统,通过对大量的图书销售数据进行分析和挖掘,为图书销售企业提供决策支持。本文首先介绍了研究的背景和目的,然......
  • 企业信息查询接口:高效便捷的数据获取工具
    企业信息查询接口:高效便捷的数据获取工具关键词企业信息查询接口,企业数据API,企业查询工具,企业数据获取,JSON接口,RESTfulAPI,高并发查询,开发者工具,企业背景核实,市场调研,数据验证,开票自动补全,智能客服,商业信用评估背景介绍在当今的数字化时代,企业信息......
  • 利用Python爬虫获取亚马逊商品评论的详细指南
    引言在电子商务领域,用户评论是了解产品口碑和市场反馈的重要渠道。亚马逊作为全球领先的电商平台,拥有海量的商品评论数据。本文将介绍如何使用Python编写爬虫程序,从亚马逊网站获取商品评论数据,并提供详细的代码示例。准备工作在开始编写爬虫之前,我们需要做一些准备工作:安......
  • flask框架考研图书资料销售系统毕设源码+论文
    校园二手货物交易平台m1a2o本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于考研图书资料销售系统的研究,现有研究主要以图书销售系统为主,但专门针对考研图书资料销售系统的研究较......
  • 2024-11-29《axios获取不到response返回的响应的解决方法》
    axios获取不到response返回的响应的解决方法 今天在用mybatis+vue+axios写登录界面的时候,发现用户名还有密码的数据都能够传输到servlet里,但是当servlet对html界面进行相应的时候,axios却收不到消息,经过长时间的排查后也没有发现问题,终于在今晚的百度下发现了结果,上原文:解决方......
  • 如何使用Edu邮箱获取免费福利
    嘿,朋友们,今天咱们来聊聊如何利用Edu邮箱获取各种免费福利。你知道,Edu邮箱就像一张通行证,打开了许多特权的大门。准备好了吗?让我们直奔主题。什么是Edu邮箱?Edu邮箱通常由教育机构(如大学和学院)发放,主要用于学生和教职员工之间的通信。由于其特殊身份,Edu邮箱享有许多免费或折扣......
  • 如何使用浏览器开发者工具直接获取 .crx 文件?
    ggggggggggggggggggggggggggggggpt要使用浏览器开发者工具直接获取.crx文件,可以按照以下步骤操作:步骤1:打开Chrome网上应用店打开Chrome浏览器,访问Chrome网上应用店。搜索并选择你想要安装的插件。步骤2:获取插件的ID每个插件在Chrome网上应用店中都有一个......
  • 图书馆管理系统(源码+数据库+报告)
    一、项目介绍373基于SpringBoot的阿博图书馆管理系统,系统包含两种角色:用户、管理员,系统分为前台和后台两大模块,主要功能如下:1管理员功能模块-管理员登录  管理员通过填写用户名、密码、角色进行登录。-管理员功能界面  管理员登录后可以访问首页、个人中心、......
  • osg获取鼠标在三维空间中的点击位置
      #pragmaonce#include<osgGA/TrackballManipulator>#include<osgGA/CameraManipulator>#include<osgGA/GUIActionAdapter>#include<osg/Group>#include<osg/Geode>#include<osg/ShapeDrawable>#include<osgDB/ReadF......