来啦,老弟

我们已经知道怎么使用

Requests

进行各种请求骚操作

也知道了对服务器返回的数据如何使用

正则表达式

来过滤我们想要的内容

...

那么接下来

我们就使用 requests 和 re 来写一个爬虫

作为一个爱看书的你(说的跟真的似的)

怎么能发现好书呢?

所以我们

爬取当当网的前 500 本好五星评书籍

怎么样?

ok

接下来就是

学习 python 的正确姿势

 

请在电脑的陪同下

边看本文边练习

 

首先我们要对我们的目标网站进行分析

先摸清对方的底

我们才能战无不胜

打开这个书籍排行榜的地址

http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-1

 

我们可以看到是这样的一个网页

每一页显示 20 本书

当我们点击下一页的时候

你可以发现地址变了

http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-2

也就是我们翻到第几页的时候

链接地址的最后一个参数会跟着变

那么我们等会在 python 中可以用一个变量

来实现获取不同页数的内容

接着

用我们之前说的 Chrome 骚操作

来分析一下

我们要的内容是怎么请求的

以及

返回给我们的源代码是什么样的

可以看到

我们通过 GET 请求

我们的请求头

这是服务器返回来的数据

接着我们再来分析一下我们要抓取的关键信息

我们要的就是前 500 本书的

排名

书名

图片地址

作者

推荐指数

五星评分次数

价格

通过源码我们可以看到

这些信息被放在了 <li> 标签中

那么我们等会就可以使用

年轻人,不会正则表达式你睡得着觉?有点出息没有?

来进行过滤我们要的信息

一顿分析完了之后

接下来撸代码了

主要思路

使用 page 变量来实现翻页

我们使用 requests 请求当当网

然后将返回的 HTML 进行正则解析

由于我们暂时还没学到数据库

所以解析完之后就把内容存到文件中

def main(page):    url = 'http://bang.dangdang.com/books/fivestars/01.00.00.00.00.00-recent30-0-0-1-' + str(page)    html = request_dandan(url)    items = parse_result(html) # 解析过滤我们想要的信息

    for item in items:        write_item_to_file(item)

请求当当网

当我们请求成功之后

拿到源代码

def request_dandan(url):    try:        response = requests.get(url)        if response.status_code == 200:            return response.text    except requests.RequestException:        return None

拿到源代码了

就要对其解析

使用正则表达式获取我们想要的关键信息

获取到了之后我们封装一下数据

def parse_result(html):    pattern = re.compile('<li>.*?list_num.*?(\d+).</div>.*?<img src="(.*?)".*?class="name".*?title="(.*?)">.*?class="star">.*?class="tuijian">(.*?)</span>.*?class="publisher_info">.*?target="_blank">(.*?)</a>.*?class="biaosheng">.*?<span>(.*?)</span></div>.*?<p><span\sclass="price_n">&yen;(.*?)</span>.*?</li>',re.S)    items = re.findall(pattern,html)    for item in items:        yield {            'range': item[0],            'iamge': item[1],            'title': item[2],            'recommend': item[3],            'author': item[4],            'times': item[5],            'price': item[6]        }

打印一下看看结果

for item in items:        print(item)

可以看到这样的数据

没毛病

现在我们获取的是第 1 页的数据

如何自动获取 25 页 500 条数据呢

来个 for 循环呗

if __name__ == "__main__":    for i in range(1,26):        main(i)

获取完 500 本书的数据之后

存到 book.txt 文件

def write_item_to_file(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()

完成

项目跑起来

打开我们存储的 book.txt 看看

前 500 本书的数据就被我们拿到啦

本篇完

完整代码小帅b已经放到公众号后台啦

需要的朋友

在公众号发送

500

 

即可获取

ok

咱们下回再见

扫一扫

学习 Python 没烦恼

 

近期文章

python爬虫03 | 那个叫做Urllib的库让我们的python假装是浏览器

python爬虫04 | 长江后浪推前浪,Requests库把urllib库拍在沙滩上

python爬虫05 | 年轻人,不会正则表达式你睡得着觉?有点出息没有?

支持小帅b的就顺手

点个好看吧

转载于:https://www.cnblogs.com/fxxkpython/p/10832023.html

python爬虫06 | 你的第一个爬虫,爬取当当网 Top 500 本五星好评书籍相关推荐

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

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

  2. 在当当买了python怎么下载源代码-Python爬取当当网最受欢迎的 500 本书

    想看好书?想知道哪些书比较多人推荐,最好的方式就是看数据,接下来用 Python 爬取当当网五星图书榜 TOP500 的书籍,或许能给我们参考参考! Python爬取目标 爬取当当网前500本受欢迎的 ...

  3. python爬虫之--爬取当当网商品信息

                                    python爬虫之--爬取当当网图商品信息                                               ...

  4. 在当当买了python怎么下载源代码-python爬虫爬取当当网

    [实例简介]python爬虫爬取当当网 [实例截图] [核心代码] ''' Function: 当当网图书爬虫 Author: Charles 微信公众号: Charles的皮卡丘 ''' impor ...

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

    来源:公众号-极客猴 出处: 本文主要讲解如何利用urllib.re.BeautifulSoup 这几个库去实战,爬取当当网所有 Python 书籍. 1 确定爬取目标 任何网站皆可爬取,就看你要不要 ...

  6. python爬虫爬取当当网的商品信息

    python爬虫爬取当当网的商品信息 一.环境搭建 二.简介 三.当当网网页分析 1.分析网页的url规律 2.解析网页html页面 书籍商品html页面解析 其他商品html页面解析 四.代码实现 ...

  7. Python 爬虫第三步 -- 多线程爬虫爬取当当网书籍信息

    XPath 的安装以及使用 1 . XPath 的介绍 刚学过正则表达式,用的正顺手,现在就把正则表达式替换掉,使用 XPath,有人表示这太坑爹了,早知道刚上来就学习 XPath 多省事 啊.其实我 ...

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

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

  9. Python爬虫实战+Scrapy框架 爬取当当网图书信息

    1.环境准备 1.在python虚拟环境终端使用 pip install scrapy下载scrapy依赖库 2.使用scrapy startproject book创建scrapy心目工程 3.使用 ...

最新文章

  1. (转)径向模糊效果shader
  2. 手机安全卫士——软件管理-用户程序和系统程序
  3. jQuery中用来让元素显示和隐藏的函数
  4. Tortoise SVN 版本控制常用操作汇总(show log)
  5. LDAP 配置 ldap_bind: Invalid credentials (49)
  6. win7 没有microsoft print to pdf_现在还能不能下载到正版WIN 7
  7. sql2008“备份集中的数据库备份与现有的xx数据库不同”解决方法 因为是在另一台电脑对同名数据库做的备份,用常规方法还原,提示不是相同数据库,不让还原,在网上找到下面的方法解决了: 一、右击系
  8. 仿英雄联盟比赛直播网页模板
  9. 断点vue_vue 事件代理
  10. 微软6月补丁日修复7个0day:6个已遭利用且其中1个是为 APT 服务的商用exploit
  11. 微分算法 非侵入式负荷识别_基于差量特征提取与模糊聚类的非侵入式负荷监测方法...
  12. 【转】斐讯K2刷华硕固件教程
  13. 2018 蓝桥杯 C++ A组 1-7
  14. element 修改主题方法
  15. 用参数方程绘制椭球体
  16. 下载编译chromium
  17. 基于FPGA的数字识别实现
  18. 音频文件格式转化,librosa库支持的语音文件类型
  19. 中控考勤机连服务器显示1007,中控智慧ZK-S1007动态人脸识别考勤门禁终端
  20. IDEA如何导入一个已有项目

热门文章

  1. C# 数据结构 之 堆栈和队列
  2. android 关于2.2版本之前的流量统计
  3. step4 . day2标准IO和文件IO 小测试demo
  4. 修改MOSS2007内容查询部件实现自定义格式显示
  5. java linkedlist和arraylist添加元素时性能比较
  6. Java笔记(基础第二篇)
  7. 数据结构与算法分析资源总结
  8. ASP.NET MVC中为DropDownListFor设置选中项的方法
  9. php5.3连接sqlserver2005
  10. c#以文件流的形式输出xml(可以解决内存溢出)-XmlTextWriter