Python 3 爬虫之抓取当当网特价书名

基于Python爬虫对当当网图书信息采集(10w条数据)+代码 通过对10万条当当图书网数据的采集和分析,我们能够深入理解当前图书市场的动态,为出版社、作者和读者提供有价值的市场洞察。 阅读详情

网址:http://promo.dangdang.com/subject.php?pm_id=1501519&tag_id=&sort=price_asc&province_id=137&p=871

要点:

  1. Chrome审查功能看到的源码与Python爬虫真实获取的源码有出入,写正则表达式时应该参照后者。
  2. 该网页的最大页面数会变化,每次解析都要重新提取一次。
  3. 没加入异常处理,也没使用多线程或多进程,有待改进。


# 下载当当网指定页面的书名

import urllib.request
import gzip
import re
import time


# 获取网页源码
def get_html(url, timeout=10):
    req = urllib.request.Request(url, headers=headers)
    response = urllib.request.urlopen(req)
    data = response.read()
    # print('解压前大小:%.2f kb' % (len(data) / 1024)) # 默认单位是bytes字节
    if response.info().get('Content-Encoding') == 'gzip':
        data = gzip.decompress(data)
    # print('解压后大小:%.2f kb' % (len(data) / 1024))
    return data.decode('gbk')

# 获取最大页数
def get_max_page(html):
    pages = max_page_re.findall(html)
    pages = [int(x) for x in pages]
    return max(pages)


# 把书名列表保存到文件
def save(names):
    with open(savefile, 'a') as f:
        f.write("\n".join(names).strip(" ")+"\n")

# 秒-->时分秒
def trans_time(sec):
    hour = int(sec / 3600)
    sec = sec % 3600
    minute = int(sec / 60)
    sec = sec % 60
    return "%s小时 %s分 %s秒" % (hour, minute, sec)


if __name__ == "__main__":    
    headers = {
        "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
        "Accept-Encoding": "gzip, deflate, sdch",  # 要求服务器进行gzip压缩
        "Upgrade-Insecure-Requests": "1",
        "User-Agent": "Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.71 Safari/537.36"
    }
    url_pattern = r'http://promo.dangdang.com/subject.php?pm_id=1501519&tag_id=&sort=price_asc&province_id=137&p={0}'    
    savefile = r'F:\booknames.txt'  # 保存到此文件
    book_name_re = re.compile(r'<p\sclass="pic">[^>]*?title="(.*?)"')  # 解析书名
    max_page_re = re.compile(r'p=(\d+)"\s+class="page_num\s+ajax"') # 散析最大网页数

    start = time.time()
    i = 0
    count = 0
    while True:     
        i += 1   
        url = url_pattern.format(i)
        html = get_html(url)
        names = book_name_re.findall(html)
        count += len(names)
        max_page = get_max_page(html)        
        save(names)
        print("已爬 %s 页,抓取 %s 个书名,一共 %s 页" % (i, count, max_page))
        if i > max_page:
            break
    used_time = trans_time(time.time() - start)
    print('抓取完成!\n耗时 %s\n请查看 %s' % (used_time, savefile))


POWER SI仿真流程 一、打开软件Power SI二、加载PCB,可以直接使用brd文件,不用再进行格式转换三、check Stackup,与原来的PCB叠层对照一遍,检查数据加载后有没有出错。四、select Nets,加载brd文件后,可能所有的网络都处于使用状态,先在右侧net manager下面右键disable all nets,再使能需要仿真的电源网络(如果要仿真的网络没有归属到电源网络,在其上右键,选classfy as power \ground nets) 阅读详情

相关推荐

声发射传感器的工作原理是什么?

介绍声发射传感器的工作原理。

qq_39948394的博客 9246

python中文字符解码问题

在python中解码中文的时候,可能报以下错误: data.decode('gbk'); 'gbk' codec can't decode bytes in position xxx illegal multibyte ... 可以尝试把gbk换成'GB18030' 因为gbk相对于gb2312包含的字符更多,但是GB18030包含的字符数又大于gbk.所以试试GB18030

Sean.Pu的专栏 1284

软考高级,信息系统项目管理师(高项)经验分享

软考高级,信息系统项目管理师(高项)经验分享 2020-12-21信息系统项目管理师(俗称高项)成绩出来了54,55,47,终于成为高级工程师了。 本文以编写整体管理论文的格式进行,将分为项目启动、项目计划、项目执行、项目检查、项目收尾5个过程回顾高项的考试历程,希望对其他同学有借鉴意义。个人觉得可能对于一次考不过的人参考价值比较大。 第一阶段、项目启动阶段Start——决定考哪个科目。 如图,高级资格的类型有:信息系统项目管理师、系统分析师、系统架构设计师、......

zcheva的专栏 5万+

【爬虫】4.5 实践项目——爬取当当网站图书数据

Scrapy框架+Xpath信息提取方法设计商城(这里用的当当网)商品信息网站及爬虫程序,以关键字“书包”(python)搜索页面的商品,爬取(学号相关的特定某几个页面(最后一位,页面大于3)及限定数量商品(最后3位))商品信息。1. 功能描述2. 程序的结构设计下面两个特定数量爬取写了两个管道 pipelines_1.py, pipelines_2.py。

Jack 1万+

数字图像处理:直方图匹配或规定化Histogram Matching (Specification)原理及感悟

本文介绍了连续图像和数字图像直方图匹配(直方图规定化)的原理、处理过程,并提供了案例进行了讲解。可以看到,直方图均衡处理是直方图匹配的一个重要桥梁。 最后,对于直方图规定化这个翻译个人觉得很low,个人感觉叫指定直方图更好理解,但Histogram Specification怎么翻译确实不太好把握,因此还是叫Histogram Matching直方图匹配最好。

老猿Python 2880

构建个体结构脑网络的另一种方法

这篇文献提出了一种构建个体结构脑网络的方法即Morphometric INverse Divergence (MIND),通过T1像数据即可对每个被试构建一个脑网络,且通过多个特征进行构建而非单一的特征。即可获得由4个特征得到的个体结构网络矩阵,可以根据自己的需求采用不同的特征组合得到网络矩阵,也可以结合T1/T2像得到髓鞘化相关的网络矩阵,后续可修改代码批量处理自己的数据。这是文献贴出来的代码。在终端直接克隆到本地。2.修改路径运行代码。

weixin_52073820的博客 823

python当当网爬虫

   最终要实现的是将当当网上面的书籍信息,书籍名字,网址和评论数爬取,存入到数据库中。(首先要做的是创建好数据库,创建的数据库名字为dd,创建的表为books,字段为title,link,comment)。 1、创建项目 scrapy startproject dangdang 2、进入项目文件夹创建爬虫文件 &gt;scrapy genspider –t basic dd dangdan...

xx20cw的博客 2462

【Unity实战篇 】| 游戏中实现镂空遮罩效果【矩形、圆形镂空遮罩】

本文来写一下怎样在Unity中完成一个 镂空遮罩 的效果。 镂空遮罩 比较常用的有两种:矩形镂空遮罩、圆形镂空遮罩。 镂空遮罩 在游戏中常被当做新手引导必备的内容,可以给玩家更多不一样的体验。 下面就一起来看一下怎样做出这种效果吧!

努力前行,总会成为自己心中的那道光 1万+

【Python——爬取当当网书籍相关】

异步编程

weixin_59638462的博客 687

扩散模型实战:从零开始训练手写数字生成模型

手写数字的数据集是绝大部分炼丹师的深度学习初恋,这篇博客以代码为主,手把手带读者搭建一个基于扩散模型的手写数字生成模型,非常适合刚接触扩散模型的初学者学习。

沉迷单车的追风少年 1914

【图像去噪(Image Denoising)】关于【图像去噪】专栏的相关说明,包含适配人群、专栏简介、专栏亮点、阅读方法、定价理由、品质承诺、关于更新、去噪概述、文章目录、资料汇总、问题汇总(更新中)

你是否在全网苦寻【图像去噪(ImageDenoising)】的相关资料?你的目标是否是看懂【图像去噪(ImageDenoising)】的相关论文,复现代码,跑出结果,并试图创新?你是否需要发表【图像去噪(ImageDenoising)】的相关论文毕业?你是否需要做【图像去噪(ImageDenoising)】的相关项目,开发软件,研究算法,获得专利或者软著?只要是与【图像去噪(ImageDenoising)】有关的问题,那么请继续往下看。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 2万+

Python爬虫——手把手爬Kindle商店

爬取网页:Kindle商店中的今日特价书 基本内容涉及: urllib2获取网页、re正则表达式、图像获取阅读前的建议: 必备条件:Python的基础知识

Vicent_Chen的博客 3407

java零基础从入门到精通(全)

目录前言1. 入门知识1.1 java体系1.2 JDK/JRE/JVM区别1.3 编译与运行理解1.4 类体函数细节2. 标识符 前言 java优势 健壮性(JVM(C++语言写的一个虚拟的计算机)、GC(垃圾回收机制)) 多线程并发 可移植性/跨平台 1. 入门知识 1.1 java体系 JavaSE:标准版 JavaEE:企业版 JavaME:微型版 1.2 JDK/JRE/JVM区别 JVM是不能独立安装的。 JRE和JDK都是可以独立安装的 层层嵌套,jvm包括jdk,jdk包括jre

码农研究僧的博客 6万+

Python正则表达式实战:从爬虫数据提取到文本处理的核心技巧

正则表达式是文本模式匹配与处理的通用技术,其核心原理在于通过一套精炼的元字符语法规则,定义字符串的搜索模式,从而实现对文本的高速、精准定位与提取。这项技术在数据处理领域具有极高的价值,尤其在处理非结构化或半结构化数据时,能够绕过复杂解析库的限制,直击目标信息。其应用场景广泛,从网页数据抓取、日志分析到字符串清洗与格式化,都离不开正则表达式的身影。本文聚焦于Python的`re`模块,深入剖析其核心方法、**贪婪与非贪婪模式**的差异与陷阱,并通过多个实战案例,如从混乱HTML中提取商品信息、解析非结构化日志

weixin_34221036的博客 351

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

python毕设基于+vue的网上书城管理系统70bj95e9程序+论文

随着互联网技术的飞速发展,电子商务已成为现代商业的重要模式之一。网上书城作为电子商务在图书领域的具体应用,凭借其便捷性、丰富性和高效性,逐渐成为人们购买图书的首选途径。然而,传统的网上书城管理系统在用户体验、商品管理、订单处理等方面仍存在诸多问题,如界面不友好、搜索功能不强大、图书分类不明确、特价信息更新不及时等。这些问题不仅影响了用户的购书体验,也制约了网上书城的进一步发展。因此,设计并实现一个功能完善、用户体验良好的网上书城管理系统,对于提升网上书城的竞争力、满足用户需求具有重要意义。

bushe902的博客 735

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Python爬虫---scrapy框架---当当网管道封装

pipelines.py文件:管道文件,里面只有一个类,用于处理下载数据的,值越小优先级越高。dang.py文件:自己创建,实现爬虫核心功能的文件。settings文件:配置文件,例如开启管道。items文件:定义数据结构的地方。

weixin_52053631的博客 759

Python爬取当当网APP数据

目标 场景:有时候通过传统的方法去爬一些 Web 网页或者 APP,受限于对方的反爬方案,很难爬到想要的数据,这个时候可以考虑使用「Appium」结合「mitmproxy」的方式去爬取数据。 其中,Appium 负责驱动 App 端自动化运行,mitmproxy 负责截取请求数据并解析保存到数据库。 今天的目的是爬取「当当网」的所有数据,并保存到 MongoDB 数据库当中。 准备工作 首先,需要在 PC 上安装好 Charles 和 Appium Desktop,并配置好 mitmpr.

Python案例分享,B站视频教程:https://space.bilibili.com/523606542 1571

Python爬虫爬取当当网图书信息(selenium模拟edge浏览器版)

【代码】Python爬虫爬取当当网图书信息(selenium模拟edge浏览器版)

m0_74149104的博客 1126

Python Flask图书数据爬取分析系统 Echarts可视化 当当网数据挖掘 计算机毕业设计 图书数据爬取分析可视化系统 python爬虫 Flask框架 当当网 (附源码)✅

Python Flask图书数据爬取分析系统 Echarts可视化 当当网数据挖掘 计算机毕业设计 图书数据爬取分析可视化系统 python爬虫 Flask框架 当当网 (附源码)✅

公众号:源码之屋,十多年程序猿资深互联网人,目前专注于Python/Java/大数据项目解决方案制定,提供各行业各编程语言的全套开发服务,喜爱code,喜爱分享,生命不止,编码不息! 2500

python课程设计——当当网Python图书数据分析

一、数据获取 本次项目数据来源为爬虫获取,目标为为当当网上关于python的书籍 爬虫主要思路:通过观察当当网,观察结构,选用适合的方法。先进行单页的数据爬取,再进行多页爬取;解析方法为xpath方法,爬取目标为:书名、价格、作业、出版社、出版时间、商品链接、评论数量;最后将爬取的数据保存到csv文件当中。 爬虫代码如下: import requests from lxml import etree import re import csv def get_page(): # 数据的多页爬取,经过观

weixin_48874360的博客 1万+

Python爬虫基础——案例:爬取当当网的图书销售排行榜

注意:在整个网页爬取的过程中,遇到过图书中没有作者的情况,这是会产生报错;还有一个问题是价格时,将字符串转化为float类型时,有些价格采用1,200.2,这样的方式进行计数时,转化或报错。参考网上方法,对书中所给的代码进行修改。这里采用的是采用BeautifulSoup模块进行数据解析,如果读者觉得这部分难得话可以采用XPath表达式进行数据解析。因人而异,黑猫白猫抓住耗子就是好猫。

weixin_47753171的博客 848

Python pyecharts Boxplot图

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习。

m0_57472099的博客 1332

python爬虫之利用pyquery爬取当当网图书信息

初学爬虫, 根据课程学习python爬虫,老规矩,先不管三七二十几,先敲了再说。 需求: 爬取图书的图片链接、图书的title信息、当前定价、评论数和评价星数共五部分信息。 分析: 打开当当,搜索python书籍,然后右键,检查网页元素,找到network,然后刷新整个页面,就会返回请求的页面数据,找到左边的红框内的请求链接,然后打开右边的response模块,检查下面返回的内容是否有我们需要的信息,发现没问题,就可以继续往下进行。 寻找图片: 把鼠标放在网页的图片上直接右键,然后...

u014543416的博客 6237

python完整的爬虫实例(当当图书)

整理了一个简单的爬虫实例,用的是python 3.7 一、找到目标网站,分析网站代码结构 以当当为例: http://search.dangdang.com/?key=%D0%C4%C0%ED%D1%A7&act=input&page_index=1 我们需要获取图书列表中的书名、作者、图片等信息,首先需要找到它的HTML代码段,分析它的结构,以便用合适的方法get到我们需...

翔坨儿的博客 5527

【python】当当书籍数据抓取分析与可视化(代码+报告)【独一无二】

本项目旨在研究和分析当当网上的书籍信息。当当网作为中国领先的在线零售平台之一,其上架的书籍种类繁多,涵盖了从文学、科技到教育等多个领域。这些书籍信息不仅能反映出市场上的流行趋势,还可以揭示消费者的购买偏好和出版业的发展动态。 项目的第一阶段集中在通过网络爬虫技术从当当网上爬取书籍数据。使用Python语言,结合requests和lxml库,项目团队成功地爬取了书名、作者、单价、出版日期、出版社和书籍简介等关键信息。在这个过程中,团队克服了多种网络爬虫的常见挑战,如网页编码处理、动态加载的内容、反爬机制的规避

测试开发自动化 1万+

Python爬虫爬取当当网图书信息(selenium模拟谷歌浏览器版)

以及爬取图书图片的url的时候,存在爬取到"https://search.dangdang.com/Standard/Search/Extend/hosts/images/model/guan/url_none.png"的情况,这里我们采用另一种爬取方式以求爬取到正确的图片url。由于是模拟谷歌浏览器,需要在运行代码的计算机上下载有谷歌浏览器,同时也需要根据谷歌浏览器的版本下载相应版本的谷歌浏览器驱动放在PyCharm 项目的根目录下,这里就不在过多赘述了,详情参考。

m0_74149104的博客 2715

2023最新当当网爬取书籍信息python源代码,使用selenium库动态爬取!欢迎各位学习交流!

其他版本或可,但4.0以上版本不支持。

qq_53862860的博客 1939
上一篇: 在Chrome官网下载离线安装包
下一篇: Python 包管理工具解惑
KingLearnJava
博客等级 码龄12年 93粉丝 84原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值