首页 > 编程语言 >【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

时间:2023-06-29 14:55:04浏览次数:59  
标签:star python 爬虫 df book csv TOP250

目录

一、爬虫对象-豆瓣读书TOP250

今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数据:
https://book.douban.com/top250
豆瓣网页

开发好python爬虫代码后,爬取成功后的csv数据,如下:
结果数据

代码是怎样实现的爬取呢?下面逐一讲解python实现。

二、python爬虫代码讲解

首先,导入需要用到的库:

import requests  # 发送请求
from bs4 import BeautifulSoup  # 解析网页
import pandas as pd  # 存取csv
from time import sleep  # 等待时间

然后,向豆瓣读书网页发送请求:

res = requests.get(url, headers=headers)

利用BeautifulSoup库解析响应页面:

soup = BeautifulSoup(res.text, 'html.parser')

用BeautifulSoup的select函数,(css解析的方法)编写代码逻辑,部分核心代码:

name = book.select('.pl2 a')[0]['title']  # 书名
book_name.append(name)
bkurl = book.select('.pl2 a')[0]['href']  # 书籍链接
book_url.append(bkurl)
star = book.select('.rating_nums')[0].text  # 书籍评分
book_star.append(star)
star_people = book.select('.pl')[1].text  # 评分人数
star_people = star_people.strip().replace(' ', '').replace('人评价', '').replace('(\n', '').replace('\n)',
                                                                                                 '')  # 数据清洗
book_star_people.append(star_people)

最后,将爬取到的数据保存到csv文件中:

def save_to_csv(csv_name):
	"""
	数据保存到csv
	:return: None
	"""
	df = pd.DataFrame()  # 初始化一个DataFrame对象
	df['书名'] = book_name
	df['豆瓣链接'] = book_url
	df['作者'] = book_author
	df['译者'] = book_translater
	df['出版社'] = book_publisher
	df['出版日期'] = book_pub_year
	df['价格'] = book_price
	df['评分'] = book_star
	df['评分人数'] = book_star_people
	df['一句话评价'] = book_comment
	df.to_csv(csv_name, encoding='utf8')  # 将数据保存到csv文件

其中,把各个list赋值为DataFrame的各个列,就把list数据转换为了DataFrame数据,然后直接to_csv保存。
这样,爬取的数据就持久化保存下来了。

三、讲解视频

同步讲解视频:https://www.zhihu.com/zvideo/1464515550177546240

四、完整源码

附完整源代码:【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!


我是 @马哥python说 ,持续分享python源码干货中!

标签:star,python,爬虫,df,book,csv,TOP250
From: https://www.cnblogs.com/mashukui/p/17514196.html

相关文章

  • Python调试中特殊的属性值: __iter__
    在调试python源码时遇到一件奇怪的事情,某个属性的值为__iter__,并且给它明确的赋别的值,发现并没有作用,如下所示:仔细思考了一下,有点儿明白了,__getattr__方法的作用是当找不到对象的属性时会调用此函数,这时,method的值'deviceInfo'就是此对象不存在的属性,所以进......
  • python将excel中的数据写入固定的word格式中
    fromopenpyxlimportload_workbookfromdocximportDocumentimportdatetimefromdatetimeimportdatetimeasdatetwb=load_workbook("收集表.xlsx")ws=wb['收集表']fromdocx.sharedimportInches,Cm#读取表中某行数据ll=[]foriinws.column......
  • Python控制鼠标操作神器
    我们以前讲过怎样使用Python在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作。今天我们来聊一聊如何在桌面实现自动化操作。与浏览器页面自动化操作类似,桌面自动化操作也是需要定位鼠标在桌面的位置,然后根据定位的位置执行对应的操作。......
  • 利用python将数据写入CSV文件中
    利用python将数据写入CSV文件中全部代码如下:importcsv#1.创建文件对象f=open('cav_file.csv','w',encoding='utf-8',newline="")#2.基于文件对象构建csv写入对象csv_write=csv.writer(f)#3.构建列表头csv_write.writerow(['学号',......
  • 关于python刷题的语法要点
    赋值lista,bb=a,itisjustareferenceassignment.a改变,b也改变b=a[:],itiscopy.a改变,b不变b=a+[4]a[::]里::是一种operater,默认是a[::1],1代表从头到尾的取间隔为1的元素组成新的list。所以a[::-1],就是reversed,还可以有a[::-2]排序listxx.sort()ory=sor......
  • Java or Python?测试开发工程师如何选择合适的编程语言?
    很多测试开发工程师尤其是刚入行的同学对编程语言和技术栈选择问题特别关注,毕竟掌握一门编程语言要花不少时间成本,也直接关系到未来的面试和就业(不同企业/项目对技术栈要求也不一样),根据自身情况做一个相对正确的选择确实要比盲目投入更明智也更高效。目前最常见的情况是纠结选择Jav......
  • Selenium自动化程序被检测为爬虫,怎么屏蔽和绕过
    先打开浏览器,再链接操作1、打开浏览器时添加以下参数:--remote-debugging-port=9222--user-data-dir="C:\\selenium\\ChromeProfile"2、selenium中设置浏览器选项,通过上面设置的9222端口连接浏览器:fromselenium.webdriver.chrome.optionsimportOptionschrome_option......
  • python题目:使用python将指定字符串如:"aabbc"中的"ab"串删除,删除过后的数据为:c【杭州多
    定义一个函数,在函数体内完成以下逻辑:使用python将指定字符串如:"aabbc"中的"ab"串删除,删除过后的数据为:cimportsyssys.setrecursionlimit(100000)#设置递归的深度为10万defdel1(str1):#str1='aabbc'while"ab"notinstr1:print(str1)exi......
  • python使用隧道代理做爬虫模版
    以下是一个使用隧道代理进行爬虫的Python模板:```pythonimportrequests#设置代理服务器proxy_host="your_proxy_host"proxy_port="your_proxy_port"proxy_username="your_proxy_username"proxy_password="your_proxy_password"#设置目标网址target_url=......
  • Python学习笔记
    Python学习笔记2-27在命令行窗口中启动的Python解释器中实现在Python自带的IDLE中实现print("Helloworld")编码规范每个import语句只导入一个模块,尽量避免一次导入多个模块不要在行尾添加分号“:”,也不要用分号将两条命令放在同一行建议每行不超过80个字符使用必要的空行可以增加......