引言

课题背景

随着互联网的快速发展,网上购物逐渐成为一种广为人知的购物方式,并且深受人们的喜欢。读书可以增加一个人谈吐的质量和深度。读书,可以让你掌握知识,而知识就像呼吸 一样,吐纳之间,可以见人的气质与涵养。越来越多的人通过阅读来升华自己,而通过网上购买图书则成为了很多年轻人的首选。

目的和意义

对当当网Top500的爬取主要是为了将数据保存在本地文件,以方便随时查看。避免了反复上网查看的繁琐。

要实现的功能

将当当网五星排行榜中的排名,图片,书名,作者,100%推荐,五星评论数,价格爬取下来,并保存在记事本中。

开发环境

Win10, PyCharm

系统结构

先通过requests向网页发送请求,打开网页,然后通过re(正则表达式)获取网页数据,并通过time控制访问间隔时间,最后通过json将数据保存在记事本中。

实现代码

#导入模块
import requests
import re
import json
import time
import randomua_list = ['Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1''Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB7.0)''Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)''Mozilla/5.0 (Windows; U; Windows NT 6.1; ) AppleWebKit/534.12 (KHTML, like Gecko) Maxthon/3.0 Safari/534.12''Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.3 (KHTML, like Gecko) Chrome/6.0.472.33 Safari/534.3 SE 2.X MetaSr 1.0']
'''
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'
}#使用代理ip
proxies = {'http':'183.164.226.210:4216','https':'183.164.226.210:4216',
}
'''#加载页面
def get_html(url):time.sleep(5)# 在ua_list列表中任意选择一个User-AgentuserAgent = random.choice(ua_list)# 请求头headers = {'User-Agent': userAgent}try:response = requests.get(url,headers=headers)if response.status_code == 200:return response.textexcept requests.RequestException:return None#解析网页
def parse_html(html):#利用正则表达式爬取自己所需要的内容pattern = re.compile('<li>.*?list_num.*?(\d+).*?.</div>''.*?<img src="(.*?)"''.*?class="name".*?title="(.*?)"''.*?class="star".*?class="tuijian">(.*?)</span></div>''.*?class="publisher_info".*?target="_blank">(.*?)</a>''.*?class="biaosheng".*?<span>(.*?)</span></div>''.*?class="price".*?class="price_n">&yen;(.*?)</span>.*?</li>',re.S)items = re.findall(pattern,html)#print (items)for item in items:yield {'range': item[0],'image': item[1],'title': item[2],'recommend': item[3],'author': item[4],'times': item[5],'prise': item[6]}#保存数据
def save_data(item):print('正在保存数据'+str(item))with open('book.txt','a',encoding='utf-8') as f:f.write(json.dumps(item, ensure_ascii=False)+'\n')f.close()#保存网页
#def save_html(html):#with open('当当.html','w', encoding='gb2312')as f:#f.write(html)def main(page):url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-month-2020-6-1-' + str(page)html = get_html(url)#save_html(html)items = parse_html(html)for item in items:save_data(item)if __name__=='__main__':for i in range(1,26):main(i)

实验截图






由于篇幅问题就不在放后面的截图了。

总结和展望

这次数据保存在记事本1中,有点不太美观,图片也只是爬取了网页地址,而不是一张图片。希望下次自己可以做的更好。

当当网读书排行榜爬虫相关推荐

  1. 金融数据分析(三)当当网店铺商品爬虫——爬虫类书籍为例:requestsbs4

    案例(二)爬虫预热 项目一:当当网店商品爬虫--爬虫类书籍为例 此案例是运用bs4库find方法对相关内容进行抓取. -*- coding: utf-8 -*- import requests imp ...

  2. 当当网畅销书排行爬虫(requests+BeautifulSoup)

    今天要做的是一个爬取当当网畅销书排行的爬虫,之后想看排行直接运行程序就可以看到啦,没有多余的信息,是不是很给力! 在前两次的爬虫编写过程中,思想都是把整个HTML文档看做一个很长很长的字符串,通过编写 ...

  3. 如何爬取当当网畅销书排行榜信息? requests + pyquery

    ''' 爬取当当网的五星图书排行榜的信息 ''' Max_Page = 3 # 爬取前三页的排行榜信息 import requests from pyquery import PyQuery as p ...

  4. 爬虫百战(一):爬取当当网Top500本五星好评书籍

    爬取当当网Top500本五星好评书籍 ==实战前提:== 准备工作 撸代码 成果展示 实战前提: 掌握requests库的使用 熟悉re库,正则表达式的简单使用 可参考我的另外两篇博客进行学习 准备工 ...

  5. python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 ... 那么接下来 我们就使用 requests 和 re ...

  6. python爬虫什么书好_python爬虫入门06 | 爬取当当网 Top 500 本五星好评书籍

    来啦,老弟 image 我们已经知道怎么使用 Requests 进行各种请求骚操作 也知道了对服务器返回的数据如何使用 正则表达式 来过滤我们想要的内容 - 那么接下来 我们就使用 requests ...

  7. Python爬虫 离线爬取当当网畅销书Top500的图书信息

    本实例还有另外的在线爬虫实现,有兴趣可点击在线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...

  8. Python爬虫 在线爬取当当网畅销书Top500的图书信息

    本实例还有另外的离线爬虫实现,有兴趣可点击离线爬取当当网畅销书Top500的图书信息 爬虫说明 1.使用requests和Lxml库爬取,(用BS4也很简单,这里是为了练习Xpath的语法) 2.爬虫 ...

  9. 在当当买了python怎么下载源代码-爬虫实战一:爬取当当网所有 Python 书籍

    图片来自 unsplash 我们已经学习 urllib.re.BeautifulSoup 这三个库的用法.但只是停留在理论层面上,还需实践来检验学习成果.因此,本文主要讲解如何利用我们刚才的几个库去实 ...

最新文章

  1. Sass--传一个不带值的参数
  2. c语言如何快速看懂别人的程序,探究如何快速看懂单片机程序方法
  3. php 编译ext目录下的,PHP编译安装后的目录和文件解释?
  4. (三)Redis for StackExchange.Redis
  5. 二本毕业,努力 5 年,月入 5w 的程序员和他们的公众号
  6. Qt中文乱码解决思路
  7. 昨晚停网后,我写了一段Python代码破解了隔壁小姐姐的wifi密码,结果亮了!
  8. Docker + Zookeeper + SolrCloud(8.1.1)跨主机搭建集群有问题
  9. as 从java_从Java调用AS400 RPG
  10. 打乱 数字_“142857”金字塔中的神秘数字,其中隐藏什么秘密?
  11. 高通9008刷机,刷机参考
  12. 豆瓣评分9.4,邱锡鹏教授蒲公英书姊妹篇《神经网络与深度学习:案例与实践》重磅来袭...
  13. 字号大小对应表(字号换算磅值)
  14. 【页面置换】页面置换算法的设计
  15. 计算机视觉将打造中国技术的“胜利者效应”
  16. 如何使用命令提示符运行java程序
  17. 安全分析--追踪溯源的找人思路
  18. [附源码]Nodejs计算机毕业设计汽车维修服务系统Express(程序+LW)
  19. 输入两个质数的乘积,求乘数中较大的那个质数
  20. i1U机架服务器做系统,微星MS-9211 1U 机架式服务器准系统

热门文章

  1. Android 适配暗黑模式
  2. 20190820美团视频一面面经
  3. android 应用学习
  4. 数据库系统概念 | 第三章:SQL介绍
  5. layui数据表格,Switch按钮点击后修改表单数据
  6. 豆瓣FM snap应用
  7. 第19节 三个败家子(19)——史上最牛太守孙坚
  8. 产品经理之产品类题目
  9. ThinkPhp 表单提交数据
  10. 使用ThinkPHP操作数据库