平台

python3.5
windows 10

目标结构

最近想学习一下python爬虫,所以目标定在豆瓣读书top250。结构简单,没有js加载的内容等,感觉比较适合入门新手来爬取。
首先看一下top250的网页结构,chrome浏览器,通过F12查看。

可以看到每本书的条目,对应的网页里是一个table的标签。继续点开箭头,可以看到一本书中具体的内容结构:

准备爬取的内容主要是书名、别名、信息、评分、人数、描述
以《追风筝的人》为例:
书名:追风筝的人
别名:The Kite Runner
信息:[美] 卡勒德·胡赛尼 / 李继宏 / 上海人民出版社 / 2006-5 / 29.00元
评分:8.8
人数:259215
描述:为你,千千万万遍

爬取

主要使用了三个python库,requests,lxml,BeautifulSoup
requests库主要是获取网页的内容和结构
lxml库用来解析网页
BeautifulSoup则是用来抽取网页中的文本信息

贴上代码:

#!/usr/bin/env python
# encoding: utf-8import re
import requests
from bs4 import BeautifulSoupdef book(target_url):books = []book = requests.get(target_url) #使用requests返回网页的整体结构soup = BeautifulSoup(book.text, 'lxml') # 使用lxml作为解析器,返回一个Beautifulsoup对象table = soup.findAll('table', {"width": "100%"}) #找到其中所有width=100%的table标签),即找到所有的书for item in table: #遍历table,一个item代表一本书name = item.div.a.text.strip() #找到书名r_name = name.replace('\n', '').replace(' ', '') #通过看网页的HTML结构,可以发现书名后是有换行以及空格的,将这些全部通过replace替换去除tmp2 = item.div.span  #判断是否存在别名if tmp2:name2 = tmp2.text.strip().replace(':', '') #因为是通过div.span判断别名 有些书的别名前面有个冒号,比如《三体系列》else:name2 = r_name #无别名就使用原始的名称url = item.div.a['href'] #获取书的链接info = item.find('p', {"class": "pl"}).text #获取书的信息score = item.find('span', {"class": "rating_nums"}).text.strip() #获取分数nums = item.find('span', {"class": "pl"}).text.strip() # 获取评价人数num = re.findall('(\d+)人评价', nums)[0]  # 通过正则取具体的数字if item.find('span', {"class": "inq"}): # 判断是否存在描述desc = item.find('span', {"class": "inq"}).text.strip()else:desc = 'no description'books.append((r_name, name2, url, info, score, num, desc)) #以元组存入列表return books #返回一页的书籍for n in range(10):url1 = 'https://book.douban.com/top250?start=' + str(n*25) #top250的网页,每页25本书,共10页,“start=”后面从0开始,以25递增tmp = book(url1)with open('booktop250.xls', 'a', encoding='utf-8') as d: #新建一个文件存放数据,模式取'a',表示在后面追加;编码一定要写上,因为win下新建文件,默认是gbk编码,但是前面返回的结构是unicode的,会报编码错误for i in tmp:print(i[0]+"\t"+i[1]+"\t"+i[2]+"\t"+i[3]+"\t"+i[4]+"\t"+i[5]+"\t"+i[6], file=d)

最后保存的文件是xls文件,直接打开的话,会是乱码。解决方法是,用记事本这个xls文件,然后另存为的时候,编码方式选ANSI,这样就能打开xls文件了。当然如果直接使用txt文件保存的话,就不需要这么麻烦。
最后的抓取的结果如下:

补充材料

Requests文档
BeautifulSoup文档
均为中文

python爬取豆瓣图书Top250相关推荐

  1. python爬取豆瓣读书top250并保存xls(含源码)

    python爬取豆瓣读书top250并保存xls(含源码) 又是霍霍豆瓣的一天O(∩_∩)O哈哈~. 目标网站:http://book.douban.com/top250/ 全军出击!!! 首先,按下 ...

  2. requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

    上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250. 一.网页分析 我们爬取的网页的url是https://book.douban.com/top250?i ...

  3. 利用python爬取豆瓣电影top250

    利用python爬取豆瓣电影top250: 注:本内容只是作为个人学习记录 1.业务分析 进入网页https://movie.douban.com/top250 可以看见每部电影都呈现在眼前,点击电影 ...

  4. Python爬取豆瓣电影top250的电影信息

    Python爬取豆瓣电影top250的电影信息 前言 一.简介 二.实例源码展示 小结 前言 相信很多小伙伴在学习网络爬虫时,老师们会举一些实例案例讲解爬虫知识,本文介绍的就是经典爬虫实际案例–爬取豆 ...

  5. 源码大公开!Python爬取豆瓣电影Top250源代码,赶紧收藏!

    哈喽~大家好,我是恰恰.不知道是不是有很多小伙伴跟我一样,很喜欢看电影,尤其是那种别人推荐的豆瓣高分电影,所以学Python就有一个好处,用Python爬取豆瓣电影那是分分钟的事,再也不用因为有些电影 ...

  6. R语言爬取豆瓣图书Top250

    新手爬虫,使用R中最简单的读取网页,然后获取所需内容所在行进行解析.下面介绍爬取豆瓣图书Top250的案例. 1.首先,我们知道网页规律为:"http://book.douban.com/t ...

  7. python爬取豆瓣读书top250

    python爬取豆瓣读书top250,并保存在本地. 分别用requests+re.requests+xpath 完成 1.requests + re import requests import r ...

  8. python爬取豆瓣电影top250的代码_Python爬虫——爬取豆瓣电影Top250代码实例

    利用python爬取豆瓣电影Top250的相关信息,包括电影详情链接,图片链接,影片中文名,影片外国名,评分,评价数,概况,导演,主演,年份,地区,类别这12项内容,然后将爬取的信息写入Excel表中 ...

  9. 爬取豆瓣图书top250

    爬取豆瓣图书top250 豆瓣网址:https://book.douban.com/top250 豆瓣图书第一页:https://book.douban.com/top250?start=0 豆瓣图书 ...

最新文章

  1. Spring : 征服数据库 (两)
  2. 转:Eclipse中打开文件所在文件夹的插件及设置
  3. css3实现头像旋转360度
  4. 【C++深度剖析教程23】继承中的访问级别
  5. Pentium 4处理器架构/微架构/流水线 (2) - SSE2
  6. springboot添加webmagic_SpringBoot+Solr + webmagic JD商品爬取数据,放入solr中做搜索
  7. Tina-TI 电路仿真 多参数交流传输特性分析 频率与相位增益的关系 选择控制对象
  8. SpringBoot配置参数绑定@ConfigurationProperties@Value
  9. c++游戏编程 源代码
  10. 配置管理计划的新设想
  11. 如何批量重命名,文件批量重命名方法介绍
  12. 关于PyQt5 菜单点击实现打开chm格式的文件
  13. 小丁在研究数学问题时遇到一个定义:对于排好顺序的k个数:x1,x2,x3,…,xk,称为数列Ak:x1,x2,x3,xk,其中k为整数且k≥3.定义V(Ak)=|x1-x2|+|x2-x3|+…+|x
  14. php完美导出word,php导出生成word的方法
  15. ArcGIS提取斜坡单元
  16. 张正友标定法几个坐标系的意思
  17. 成功卸载norton antivirus企业版
  18. CMD命令 修改启动项 bcdedit
  19. 如何恢复错删了本机计算机器,如何彻底删除粉碎电脑文件?如何恢复电脑丢失文件?推荐这几款数据管理工具!...
  20. 使用console口登录管理设备和单臂路由基本配置

热门文章

  1. iOS13.7 各机型续航对比测试,更省电了吗?
  2. 微信小程序-优化接口代码-提取公共接口路径
  3. IDEA插件项目克隆下来后,如何在IDEA中导入?
  4. 组织架构图实现——jOrgChart的使用
  5. Ubuntu安装samb服务
  6. 刷脸签到python代码_背景提升|“刷脸”时代,如何运用Python实现人脸识别?
  7. 以小麦胚芽之名,智膳堂创造膳食升级新图景
  8. 拥抱组件化开发,手淘项目内部架构分享
  9. 重组人表皮生长因子(EGF)原液 ——风口浪尖的明星成分
  10. 京东图片列表、左侧导航栏、网易新闻列表、京东页面布局、京东轮播图