最近在学习python爬虫系列课程,也在学习写一些程序实例,这篇文章是爬取豆瓣图书的前250本数的名称和其他信息。

前期准备

1.安装适合的python编辑器,本人使用的是Anaconda中的Jupyter Notebook,因为便于编写和管理python的各种第三方库,所以推荐大家也使用。下载地址为:https://www.anaconda.com/download/

2.本文章要使用python库中的requests和BeautifulSoup4库爬取网页和解析网页。因为不是python自带的标准库,所以要手动安装以上两个库。

  • requests库下载地址:https://pypi.python.org/pypi/requests/
  • Beautiful Soup4库下载地址:https://pypi.python.org/pypi/beautifulsoup

3.用pip安装以上两个库,Win+R打开输入cmd, 输入如下:

pip install requests
pip install beautifulsoup4

网页分析

下面我们开始我们的爬虫程序主体,我们将要访问的是豆瓣图书的前250榜单的书名和其他信息

https://book.douban.com/top250?

如下图:

下面我们检索我们所需要的字段所在的标签,右键打开源代码检查元素,我们以查询“追风筝的人”书名为例查找所在的标签;如下图:

我们可以看到所有的字段都存储在标签div{'class':'indent'}中,每个字段都在各个table标签中,书名称在div{'class':'p12'}的a 标签中,其他信息在p标签中{’class':'pl'}中。如下图:

下面我们还要看到250本书在10个页面中,要全部爬取下来我们还需要观察更多的网页结构:

第一个网页的链接为:https://book.douban.com/top250?

第二个网页的链接为:https://book.douban.com/top250?start=25

第三个网页的链接为:https://book.douban.com/top250?start=50

我们可以发现第二、三页链接上有个start=?,可以判断为每页的起始值为0,25,50...

上面的每页都有类似的结构,我们可以开始编写我们的主程序。

程序结构

先导入我们所需要的requests库Beautiful Soup库;

import requests
from bs4 import BeautifulSoup

然后来编写我们程序的主体框架;

def getHTMLText(url):                      #获得所需要的网页页面信息returndef get_data(list,html):                   #从网页中获取页面信息,并存入列表中
    returndef print_data(list):                      #将存储在列表中的信息输出打印出来def main():
main()

接下来我们根据各个函数的目的,填充函数内的内容,第一个函数是要获取页面的信息;

def getHTMLText(url):try:r = requests.get(url ,timeout = 30)r.raise_for_status()r.encoding =r.apparent_encodingreturn r.textexcept:return "产生异常"

第二个函数是要获取数据,并存储在列表中;

def get_data(list,html):tables = BeautifulSoup(html, 'html.parser').find('div',  {'class':'indent'}).find_all('table')#在div标签中找到所有的table标签
 for table in tables:            #在所有的table标签中遍历元素
        title = table.find('div', {'class':'pl2'}).find('a').get_text()  #找到书名所在的a标签info = table.find('p', {'class':'pl'}).get_text()                #找到其他信息所在的p标签list.append([title.strip(),info.strip()])            #将其存储列表,用strip()出去其中的空字符串

第三个函数是将列表中的数据输出打印出来;

def print_data(list):print("{:^6}\t{:^10}\t{:^16}".format('序号','书名','信息'))count = 0                                        #用count来表示爬取的序号for b in list:count += 1print("{:^6}\t{:^16}\t{:^16}".format(count,b[0],b[1]))

最后我们来编写主函数;

def main():start_url = 'https://book.douban.com/top250?'           #这是起始也的urldepth = 10                                              #我们爬取的深度为10页info_list = []for i in range(depth):                                 #在每页中进行遍历url = start_url + str(25*i)                        #实际的url是原始url加上start=?
        html = getHTMLText(url)                            #解析每页的网页信息get_data(info_list,html)                           #获取数据print_data(info_list)                                  #打印输出最后的列表
main()

上面我们就全部编写完成这个爬虫程序,输出如下;

上面我们爬取的250本的豆瓣图书信息,但是不知道为什么我们使用的strip()除去空字符,在三体这本书还是有空字符存在。希望大家指点方法解决。

程序代码

上面我们成功的写完了豆瓣爬虫的代码,并成功输出了我们大致所要的结果,全部代码如下;

import requests
from bs4 import BeautifulSoupdef getHTMLText(url):try:r = requests.get(url ,timeout = 30)r.raise_for_status()r.encoding =r.apparent_encodingreturn r.textexcept:return "产生异常"def get_data(list,html):tables = BeautifulSoup(html, 'html.parser').find('div',  {'class':'indent'}).find_all('table')for table in tables:   title = table.find('div', {'class':'pl2'}).find('a').get_text()info = table.find('p', {'class':'pl'}).get_text()list.append([title.strip(),info.strip()])def print_data(list):print("{:^6}\t{:^10}\t{:^16}".format('序号','书名','信息'))count = 0for b in list:count += 1print("{:^6}\t{:^16}\t{:^16}".format(count,b[0],b[1]))def main():start_url = 'https://book.douban.com/top250?'depth = 10info_list = []for i in range(depth):url = start_url + str(25*i)html = getHTMLText(url)get_data(info_list,html)print_data(info_list)
main()

总结

1.爬虫主要用requests库和Beautiful Soup库可以简明地爬取网页上的信息;

2.先定好程序主要框架,再根据目的需求填充函数内容:获取网页信息>爬取网页数据>打印输出;

3.对于所有的信息存储于多页,要观察网页信息,构造每页的url链接来解决;

3.最重要的是解析网页结构,最好可以用标签树的形式确定字段所在的标签,并遍历全部标签存储数据。

本人学习的python也不太久,文章中有些理解和书写错误,还望大家理解和之处,谢谢!
另外,强烈推荐北京理工大学嵩天老师的python系列课程。
更多关于本人的信息请访问本人网站http://www.o-xunkhun.com/(目前处于申请维护状态)

python爬取豆瓣图书前250相关推荐

  1. python爬取豆瓣排名前250部电影封面

    话不多说,先给出网页地址豆瓣电影 Top 250,进入后我们按F12打开开发者工具查看网页信息,然后随便右键点击一张电影封面查看元素如图: 容易看出我们所需要的封面地址在img这个标签下的src属性当 ...

  2. python爬取豆瓣图书(详细步骤讲解)

    题目: 老师安排我们爬取豆瓣图书,恰好想学,所以把爬取的过程按照顺序写下来,主要是留个痕迹.在文中我会把爬虫所需的所有代码以图片形式一一讲解,图片里的代码就是全部的爬虫代码!!!如果你懒得自己敲的话, ...

  3. python xpath爬取豆瓣图书Top 250存入csv文件并解决csv乱码问题

    我上次分享过关于爬取豆瓣电影top250的实战:BeautifulSoup爬取豆瓣电影top250信息 和 python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格 , ...

  4. python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室

    豆瓣读书250 小白学习爬虫 爬取豆瓣TOP250的书,正好本人也喜欢看书 思路分析: https://book.douban.com/top250这是TOP250第一页的链接 https://boo ...

  5. Python第一战:爬取豆瓣排名前250的电影

    一.需求分析   爬取豆瓣电影Top250的基本信息,包括电影的名称.豆瓣评分.评价数.电影概况.电影链接等.(https://movie.douban.com/top250) 二.爬虫的定义   网 ...

  6. 使用Python爬取豆瓣电影 Top 250

    目录 前言 一.大致思路 1.导入第三方库 2.简单需求分析 二.代码解析 三.代码实现 四.总结一下 实现Python爬虫的基本思路: 1. 确定需求 2. 网站分析 3. 单一数据提取 4. 提取 ...

  7. python爬取豆瓣图书榜单 并存放数据库心得

    最近javaweb 项目存放图书的数据库存放的图书太少 决定去豆瓣榜单 爬取一些数据 首先是爬取网页得到数据 以字典类型先储存下来 贴上代码 def init(self, keyword): self ...

  8. 一、网络爬虫----爬取豆瓣网前250条数据

    一.爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应 获取响应内容 如果服务器能正常响应,会得到一个Res ...

  9. python爬取豆瓣图书Top250

    平台 python3.5 windows 10 目标结构 最近想学习一下python爬虫,所以目标定在豆瓣读书top250.结构简单,没有js加载的内容等,感觉比较适合入门新手来爬取. 首先看一下to ...

  10. Scrapy pycharm 爬取豆瓣排名前250信息

    一些基础的scrapy创建 项目这里就不说了,这里粘贴一下源代码,留作以后方便查阅.(大佬勿喷) 以下是项目的结构: 由于这里只用到了items.py doubanspider.py main.py, ...

最新文章

  1. 大话中文文本分类之TextRNN
  2. python用哪个软件好-4个备受欢迎的Python程序库 你用哪个?
  3. python画剖面图_如何创建Matplotlib图形与图像和剖面图相匹配?
  4. S3C2410中断系统
  5. boost::container模块实现默认初始化的程序
  6. 华中师范大学邮箱matlab,正版软件管理与服务平台(华中师范大学)
  7. 面试总结——Java篇
  8. won10qualcomm atheros无线网卡驱动安装不了
  9. Jupyter notebook系列(6):更高级的配置Mark(显示行号,更改工作路径,使用sudo权限)
  10. PS使用技巧(一) 移动工具 V
  11. pt100热电阻计算公式C语言,PT100计算公式
  12. 大学生活这样过,校招 offer 飞来找
  13. People Counter - People Counting
  14. WordCloud:连份好点的词云资料都找不到?我什么时候受过这气!!!
  15. Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品
  16. 数据库里面date类型时间有时差,时区问题
  17. his系统数据备份服务器,医院HIS信息系统数据备份的策略.doc
  18. 2021上海国际生物工程装备与技术展
  19. 公司给出的选择,我该怎么做??请大家帮忙提提建议!!
  20. Fiddler抓包抖音网络错误解决方案

热门文章

  1. Arch-008ArchLinux安装steam
  2. 大疆遭遇“口袋无人机”革命?
  3. 利用checked实现收藏按钮红心的显示与隐藏
  4. delphi xe7 EMS是什么 什么作用,怎么使用?
  5. UVALive - 5713
  6. python读txt写入excel_python实现读Excel写入.txt的方法
  7. android 图片编辑工具,照片编辑器:Photo Editor
  8. win7升级win10正式版_win7升级win10数据是否会丢失?
  9. Fluent——UDF监测指定点的物理量
  10. 获取中国票房网的五年间年度票房的数据信息(初学者完整代码)