爬取豆瓣Top250图书数据

项目的实现步骤

1.项目结构

2.获取网页数据

3.提取网页中的关键信息

4.保存数据

1.项目结构

2.获取网页数据

对应的网址为https://book.douban.com/top250



import requests
from bs4 import BeautifulSoup
"""
获取网页数据,解析数据,将相应的数据传出
"""
def get_page(url):
headers = {
'User-Agent':'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) '
'AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 '
'Mobile Safari/537.36 Edg/114.0.1823.43'
}
resp=requests.get(url,headers=headers)
soup=BeautifulSoup(resp.text,'html.parser')
return soup

3.提取网页中的关键信息

获取传出的解析后的数据,获取对应的图片,书名,作者,价格,评价,简介

from geturlcocument.get_document import get_page
import re
# 初始数据
pictures=[]
names=[]
authors=[]
prices=[]
scores=[]
sums=[]
def get_single():
# 网址地址
urls = [f"https://book.douban.com/top250?start={num}" for num in range(0,250,25)]
for url in urls:
# 获取对应的网页文本
text = get_page.get_page(url)
# 所有数据的集合
all_tr = text.find_all(name="tr", attrs={"class": "item"})
# 查找每个单项
for tr in all_tr:
# 数据类型:图片,书名,作者,价格,评分,简介
# 图片
picture = tr.find(name="img")
picture = picture.get('src')
# print(picture)
# 书名
div = tr.find(name='div', attrs={'class': 'pl2'})
name = div.find('a').text
name = re.sub(r'\s+', '', name)
# 作者
author = tr.find(name='p', attrs={'class': 'pl'}).text
author = author.split('/')[0]
# 价格
price = author.split('/')[-1]
price = re.sub(r'元', '', price)
# 评分
score = tr.find(name='span', attrs={'class': 'rating_nums'}).text
try:
sum = tr.find(name='span', attrs={'class': 'inq'}).text
except AttributeError:
sum = ''
pictures.append(picture)
names.append(name)
authors.append(author)
prices.append(price)
scores.append(score)
sums.append(sum)
data = {
"picture": pictures,
"name": names,
"author": authors,
"price": prices,
"score": scores,
"sum": sums
}
return data

将获取的数据存入到字典中,将数据传出,使用re库对相应的数据进行处理,运用异常检错

4.保存数据

获取传出的字典类型的数据,将数据存入到pandas的DataFrame类型中

from geturlcocument.get_single_docuemnt import get_single
import pandas as pd
# 获取字典类型的数据
data=get_single.get_single()
# 用pandas的DataFrame类型存储数据
df=pd.DataFrame(data)
df.to_csv('./books.csv',encoding='utf-8')
print('ending of data')

该项目完成!!!

爬取豆瓣Top250图书数据的更多相关文章

  1. 基础爬虫,谁学谁会,用requests、正则表达式爬取豆瓣Top250电影数据!

    爬取豆瓣Top250电影的评分.海报.影评等数据!   本项目是爬虫中最基础的,最简单的一例: 后面会有利用爬虫框架来完成更高级.自动化的爬虫程序.   此项目过程是运用requests请求库来获取h ...

  2. 爬取豆瓣网图书TOP250的信息

    爬取豆瓣网图书TOP250的信息,需要爬取的信息包括:书名.书本的链接.作者.出版社和出版时间.书本的价格.评分和评价,并把爬取到的数据存储到本地文件中. 参考网址:https://book.doub ...

  3. 正则爬取豆瓣Top250数据存储到CSV文件(6行代码)

    利用正则爬取豆瓣TOP250电影信息 电影名字 电影年份 电影评分 评论人数 import requests import csv import re # 不算导包的话正式代码6行 存储到csv文件 ...

  4. requests爬取豆瓣top250电影信息

    ''' 1.爬取豆瓣top250电影信息 - 第一页: https://movie.douban.com/top250?start=0&filter= - 第二页: https://movie ...

  5. python爬取豆瓣电影信息数据

    题外话+ 大家好啊,最近自己在做一个属于自己的博客网站(准备辞职回家养老了,明年再战)在家里 琐事也很多, 加上自己 一回到家就懒了(主要是家里冷啊! 广东十几度,老家几度,躲在被窝瑟瑟发抖,) 由于 ...

  6. Python 爬取豆瓣TOP250实战

    学习爬虫之路,必经的一个小项目就是爬取豆瓣的TOP250了,首先我们进入TOP250的界面看看. 可以看到每部电影都有比较全面的简介.其中包括电影名.导演.评分等. 接下来,我们就爬取这些数据,并将这 ...

  7. Python-爬虫实战 简单爬取豆瓣top250电影保存到本地

    爬虫原理 发送数据 获取数据 解析数据 保存数据 requests请求库 res = requests.get(url="目标网站地址") 获取二进制流方法:res.content ...

  8. re、base64的结合使用爬取豆瓣top250

    一.缘由 对于豆瓣的这个网站,记得使用了不少于三种的爬取和解析方式来进行的.今天的这种解析方式是我使用起来较为顺手,后来就更喜欢使用xpath解析,但是这两种也需要掌握. 二.代码展示 '''爬取豆瓣 ...

  9. Python爬虫实例:爬取豆瓣Top250

    入门第一个爬虫一般都是爬这个,实在是太简单.用了 requests 和 bs4 库. 1.检查网页元素,提取所需要的信息并保存.这个用 bs4 就可以,前面的文章中已经有详细的用法阐述. 2.找到下一 ...

  10. Python爬虫爬取豆瓣电影之数据提取值xpath和lxml模块

    工具:Python 3.6.5.PyCharm开发工具.Windows 10 操作系统.谷歌浏览器 目的:爬取豆瓣电影排行榜中电影的title.链接地址.图片.评价人数.评分等 网址:https:// ...

随机推荐

  1. Go 语言 new 和 make 关键字的区别

    原文链接: Go 语言 new 和 make 关键字的区别 本篇文章来介绍一道非常常见的面试题,到底有多常见呢?可能很多面试的开场白就是由此开始的.那就是 new 和 make 这两个内置函数的区别. ...

  2. Laf v1.0 发布:函数计算只有两种,30s 放弃的和 30s 上线的

    一般情况下,开发一个系统都需要前端和后端,仅靠一个人几乎无法胜任,需要考虑的特性和功能非常多,比如: 需要一个数据库来存放数据: 需要一个文件存储来存放各种文件,比如图片文件: 后端需要提供接口供前端 ...

  3. crictl和ctr与docker的命令的对比

    containerd 相比于docker , 多了namespace概念, 每个image和container 都会在各自的namespace下可见, 目前k8s会使用k8s.io 作为命名空间 cr ...

  4. vue:路由守卫

    路由守卫 作用:对路由进行权限控制 配置路由守卫应在暴露前配置 分类:全局守卫.独享守卫.组件内守卫 首先先给需要鉴权的路由设置好meta配置项. meta配置项:是vue-router中的一个对象, ...

  5. 关于关键字final用法以及意义

    *   * 1.final可以用来修饰的结构:类.方法.变量  *   * 2.final用来修饰一个类:此类不能被其他类所继承.  *           比如:String类.System类.St ...

  6. python入门教程之十一迭代器、生成器和装饰器

    迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退 ...

  7. Linux内存和磁盘管理(入门)

    关于对Linux系统的内存和磁盘的操作 内存和磁盘使用率 查看内存使用率: free.top 查看磁盘使用率: fdisk.df.du free 以KB为单位: $ free total used f ...

  8. 【介绍】C++五种迭代器

    目录 1. 输入迭代器(Input Iterator): 2. 输出迭代器(Output Iterator): 3. 前向迭代器(Forward Iterator): 4. 双向迭代器(Bidirec ...

  9. h5新增特性 和 css3 新特性

    H5新增: 1)用于绘画 canvas 元素. 2) 用于媒介回放的 video 和 audio 元素. 3)语义化标签 article.footer.header.nav.section3) 4)表 ...

  10. C# 系统菜单弹出框方向

    右键菜单,tootip等弹出时,弹出的位置经常在左侧,使用体验不好. 弹出方向有左对齐和右对齐 SystemParameters.MenuDropAlignment 当右对齐时,值为false 可以在 ...