python爬取豆瓣图书前250
最近在学习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爬取豆瓣图书前250相关推荐
- python爬取豆瓣排名前250部电影封面
话不多说,先给出网页地址豆瓣电影 Top 250,进入后我们按F12打开开发者工具查看网页信息,然后随便右键点击一张电影封面查看元素如图: 容易看出我们所需要的封面地址在img这个标签下的src属性当 ...
- python爬取豆瓣图书(详细步骤讲解)
题目: 老师安排我们爬取豆瓣图书,恰好想学,所以把爬取的过程按照顺序写下来,主要是留个痕迹.在文中我会把爬虫所需的所有代码以图片形式一一讲解,图片里的代码就是全部的爬虫代码!!!如果你懒得自己敲的话, ...
- python xpath爬取豆瓣图书Top 250存入csv文件并解决csv乱码问题
我上次分享过关于爬取豆瓣电影top250的实战:BeautifulSoup爬取豆瓣电影top250信息 和 python BeautifulSoup爬取豆瓣电影top250信息并写入Excel表格 , ...
- python爬取豆瓣图书top250_「豆瓣读书250」爬取豆瓣TOP250书单 - seo实验室
豆瓣读书250 小白学习爬虫 爬取豆瓣TOP250的书,正好本人也喜欢看书 思路分析: https://book.douban.com/top250这是TOP250第一页的链接 https://boo ...
- Python第一战:爬取豆瓣排名前250的电影
一.需求分析 爬取豆瓣电影Top250的基本信息,包括电影的名称.豆瓣评分.评价数.电影概况.电影链接等.(https://movie.douban.com/top250) 二.爬虫的定义 网 ...
- 使用Python爬取豆瓣电影 Top 250
目录 前言 一.大致思路 1.导入第三方库 2.简单需求分析 二.代码解析 三.代码实现 四.总结一下 实现Python爬虫的基本思路: 1. 确定需求 2. 网站分析 3. 单一数据提取 4. 提取 ...
- python爬取豆瓣图书榜单 并存放数据库心得
最近javaweb 项目存放图书的数据库存放的图书太少 决定去豆瓣榜单 爬取一些数据 首先是爬取网页得到数据 以字典类型先储存下来 贴上代码 def init(self, keyword): self ...
- 一、网络爬虫----爬取豆瓣网前250条数据
一.爬虫的基本流程 发起请求 通过HTTP库向目标站点发起请求,也就是发送一个Request,请求可以包含额外的header等信息,等待服务器响应 获取响应内容 如果服务器能正常响应,会得到一个Res ...
- python爬取豆瓣图书Top250
平台 python3.5 windows 10 目标结构 最近想学习一下python爬虫,所以目标定在豆瓣读书top250.结构简单,没有js加载的内容等,感觉比较适合入门新手来爬取. 首先看一下to ...
- Scrapy pycharm 爬取豆瓣排名前250信息
一些基础的scrapy创建 项目这里就不说了,这里粘贴一下源代码,留作以后方便查阅.(大佬勿喷) 以下是项目的结构: 由于这里只用到了items.py doubanspider.py main.py, ...
最新文章
- 大话中文文本分类之TextRNN
- python用哪个软件好-4个备受欢迎的Python程序库 你用哪个?
- python画剖面图_如何创建Matplotlib图形与图像和剖面图相匹配?
- S3C2410中断系统
- boost::container模块实现默认初始化的程序
- 华中师范大学邮箱matlab,正版软件管理与服务平台(华中师范大学)
- 面试总结——Java篇
- won10qualcomm atheros无线网卡驱动安装不了
- Jupyter notebook系列(6):更高级的配置Mark(显示行号,更改工作路径,使用sudo权限)
- PS使用技巧(一) 移动工具 V
- pt100热电阻计算公式C语言,PT100计算公式
- 大学生活这样过,校招 offer 飞来找
- People Counter - People Counting
- WordCloud:连份好点的词云资料都找不到?我什么时候受过这气!!!
- Tech Talk 活动预告 | 基于Amazon KVS打造智能视觉产品
- 数据库里面date类型时间有时差,时区问题
- his系统数据备份服务器,医院HIS信息系统数据备份的策略.doc
- 2021上海国际生物工程装备与技术展
- 公司给出的选择,我该怎么做??请大家帮忙提提建议!!
- Fiddler抓包抖音网络错误解决方案
热门文章
- Arch-008ArchLinux安装steam
- 大疆遭遇“口袋无人机”革命?
- 利用checked实现收藏按钮红心的显示与隐藏
- delphi xe7 EMS是什么 什么作用,怎么使用?
- UVALive - 5713
- python读txt写入excel_python实现读Excel写入.txt的方法
- android 图片编辑工具,照片编辑器:Photo Editor
- win7升级win10正式版_win7升级win10数据是否会丢失?
- Fluent——UDF监测指定点的物理量
- 获取中国票房网的五年间年度票房的数据信息(初学者完整代码)