Python爬虫笔记:爬取豆瓣TOP250单页内容

3 篇文章 0 订阅
订阅专栏

前言

上次我们通过glidedsky的第一关实现了获取到单页的数据,但是可能有些小伙伴会觉得只是获取到一些数字并不能直观的体现出Python爬虫的方便之处。
所以今天我跟大家分享一个小小的案例,这不是在家空闲时间比较多,又不想太过于颓废,于是我打算在豆瓣挑选一些评分比较高的书分享给大家。
当然手动筛选工作量太大了,所以我决定用python写一个爬虫,爬取豆瓣图书TOP250的简单数据,并整理成表格保存在本地。
image.png

网页元素分析

因为上篇文章只讲了获取单页数据,所以这次我们的目标也是先获取一页数据。
这个页面本身比较干净,数据也很清晰,获取会比较方便一些。
还是先f12查看页面元素,确定所要获取的数据。
image.png
通过审查元素可以看出所有数据特点:

书名包含在a标签中,
作者及出版社等信息保存在命名为pl的p标签中,并通过斜杠分割不同数据,
评分保存在class=allster_rums的span标签中,
评价人数在class='pl'的span标签中,

发现了吗?这些数据没有做任何加密,同时每一个数据标识各不相同,非常容易分辨。
这也是为什么很多人在初学爬虫时都会接触到爬取豆瓣top250例子的原因,因为数据内容有用,爬取难度相对较小。
这里还需要注意一个问题,就是这部分图书并不全是中文书籍,还有一部分是外文书,这就导致了他们之间有一个地方数据有差别:
image.png
外文书会多出一个译者名字,所以之后在保存数据到表格文件中时,需要特别注意。

代码实现

在开始之前还是先明确一下程序执行流程:

  • 访问网页
  • 获取源代码
  • 提取数据
  • 分别保存到excel文件中
    首先解决访问网页和获取源代码的问题:
import requests
from bs4 import BeautifulSoup
url = 'http://book.douban.com/top250?start='
headers = {
	'cookie':'你自己的cookie',
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
}

response = requests.get(url,headers=headers).text
bs4 = BeautifulSoup(response,'html.parser')
print(bs4)

image.png

获取到之后当然就是对数据进行提取

bookName = bs4.find_all('div',class_='pl2')
for book in bookName:
	name = book.find('a')
	name = name.text.strip()
	name = name.replace(' ','')
	print(name)

这段代码首先在获取到的html文本中寻找Class=pl2的div元素
image.png
这是没有提取a标签中书名时的原始数据
**find_all()**是BeautifulSoup模块提供的一个用来快速查询数据的方法,返回一个列表。
所以我们下面使用for循环遍历出所有找到的数据。
从上面的图片中可以看到,只匹配div元素的话会有很多干扰数据,我们此时只想要一个书名,也就是a标签的文本信息。
所以我们还需要在列表中使用find()方法匹配到a标签的内容,然后使用strip方法去除两边空格,使用replace方法将文本中多余的空格替换为空,最终可以得到:
image.png

获取到数据之后,我们希望能够把它存放到excel文件中的话需要用到一个外部库xlwt
image.png
使用pip命令安装xlwt(因为我的电脑中同时安装了py2和py3,所以将pip的版本进行了区分,只有一个python的话直接用pip即可)
然后使用 import xlwt在程序中引入该模块。

wb = xlwt.Workbook()
ws = wb.add_sheet('test_sheet')
ws.write(0,0,'书名')
ws.write(0,1,'出版信息')
ws.write(0,2,'评价人数')
ws.write(0,3,'评级')
wb.save('doubanTest.xls')

首先实例化workbook()对象,然后调用了add_sheet()方法为这个excel文件新建一个表
image.png
关于这个add_sheet()方法,前面说过python调用的外部模块保存在**Python安装目录\Lib\site-packages**下,所以我们可以在这个目录下找到Workbook类文件,从这里面查看add_sheet()的具体实现方法以及主要参数。
image.png
注意这段代码中引入Worksheet这个文件,本文中主要用到的是Worksheet中的write()方法,即将数据保存到表格文件中。
image.png
在Worksheet.py中找到write函数,注释给的非常详细,r和c分别是row和column的缩写,表示从0开始的行和列。
label参数默认为空,表示数据。
这样一来上述代码就通了,表示在第一行从第一列开始分别添加标题。
image.png
所有东西都设置好了之后就是保存这个文件,使用Workbook中的save()方法
image.png
传入一个文件名即可。
这块啰嗦了一点,主要还是希望大家能够养成多看引入模块源文件的习惯。
其他数据的获取其实和获取书名类似
获取作者及出版信息

i = 1
j = 1
k = 1
l = 1
authors = bs4.find_all('p',class_='pl')
for author in authors:
	anthor = author.text
	ws.write(j,1,author)
	j+=1
	print(author)

获取评分及评价人数

rating_nums = bs4.find_all('div',class_='star clearfix')
for rating in rating_nums:
	star = rating.find_all('span')
	reg = '\d+'
	vote = re.findall(reg,star[2].text)
	ws.write(k,2,vote)
	ws.write(l,3,star[1].text)
	k+=1
	l+=1
wb.save('doubanTest.xls')

ijkl分别代表的是不同的行数,作用在于换行时使用。
这里还有一点需要注意的地方,在获取评分及评价人数时,因为两个数据在同一个div下保存,而且是同级别的span标签并列表示的。
所以使用find_all()方法获取到全部span标签内容后可以使用下标的方式查询到不同的数据。
image.png
至此,我们的程序就大功告成了,运行后会在该目录下生成一个douban.xls文件

如果出现这种错误
image.png
说明你之前已经生成了一个doubanTest.xls文件而且没有关闭它。
解决办法是更改生成的文件名或者将原文件关闭。

公众号:长点芝士
更多Python文章,一起交流学习。

Python爬⾍入⻔--实例代码 | 4 爬取豆瓣TOP250图书信息
05-14
Python爬⾍虫⼊入⻔门 | 4 爬取豆瓣TOP250图书信息------ 实例
Python爬虫入门 | 4 爬取豆瓣TOP250图书信息
DataCastle
12-15 1万+
先来看看页面长啥样的:https://book.douban.com/top250   我们将要爬取哪些信息:书名、链接、评分、一句话评价…… 1. 爬取单个信息我们先来尝试爬取书名,利用之前的套路,还是先复制书名的xpath:  得到第一本书《追风筝的人》的书名xpath如下://*[@id="content"]/div/div[1]/div/table[1]/tbody/tr/td[2]/
python 判断div 之间的内容是否为空_Python 爬取北京二手房数据,普通人要工作多久才能买得起房...
weixin_39555320的博客
11-21 135
Python爬取赶集网北京二手房数据入门爬虫一个月,所以对每一个网站都使用了Xpath、Beautiful Soup、正则三种方法分别爬取,用于练习巩固。数据来源如下:Xpath爬取:这里主要解决运用Xpath如何判断某些元素是否存在的问题,比如如果房屋没有装修信息,不加上判断,某些元素不存在就会导致爬取中断。import requestsfrom lxml import etreefrom re...
python 角度判断_python一条语句分析几个常用函数和概念
weixin_39733943的博客
10-21 76
前言 过年也没完全闲着,每天用一点点时间学点东西,本文为大家介绍几个python操作的细节,包含all、any、for in等操作,以及介绍我解决问题的思路。一、开篇 先从我看到的一个简单的语句开始。刚看到这个语句的时候我整个人完全懵住了,完全看不懂这是干啥的。不过其实编程难的不是这些东西,这些东西再也不怕,也能想办法解决掉,而隐藏在这后面的编程思维及数学等知识是很难解决的。1.1 any、all...
爬取豆瓣top250电影每条电影的前n页评论,需要上一条博客代码里爬取的基本信息
weixin_45899520的博客
10-08 520
#连接自己的数据库 电影基本数据库表已上传可以下载 或者自己根据上一条博客的代码爬取后存到自己的数据库 有整个项目的资源可以下载 已上传flask+… import pymysql import sys import requests import bs4 import re #连接 mysql,获取连接的对象 con = pymysql.connect(host='localhost', user='name', password='123456', port=3306, db='student
Python爬虫实例:爬取豆瓣电影TOP250
最新发布
04-28
Python爬虫实例:爬取豆瓣电影TOP250
Python爬虫实例-爬取豆瓣Top250-保存为表格
11-06
Python爬虫实例-爬取豆瓣Top250-保存为表格
Python爬虫程序源代码爬取豆瓣TOP250排行榜数据电影名称评分导演演员等信息
12-21
知识领域: 数据爬取、数据分析、Python编程技术关键词: Python、网络爬虫、数据抓取、数据处理内容关键词: 豆瓣电影、排行榜、数据提取、数据分析用途: 提供一个Python编写的爬虫工具,用于抓取豆瓣电影TOP250的...
Python爬虫——爬取豆瓣电影Top250代码实例
09-19
主要介绍了Python爬取豆瓣电影Top250实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Python-爬虫爬取豆瓣top250图片
12-21
Python-爬虫爬取豆瓣top250图片Python-爬虫爬取豆瓣top250图片效果整体代码具体步骤 Python-爬虫爬取豆瓣top250图片 最近几天一直在学习爬虫,今天终于成功的写出了一个爬虫程序——爬取豆瓣排名前250的图片。豆瓣网...
python_爬虫_豆瓣TOP250_页面内容
热门推荐
越吃越胖的博客
02-07 1万+
本文仅供学习使用,如有侵权,联系删除 豆瓣TOP250书籍页面内容如下,此次将爬取图片中的内容 from bs4 import BeautifulSoup import lxml import requests import re import csv import random import time from lxml import etree from requests.exception...
python 判断div 之间的内容是否为空_Python 多线程爬虫实战
weixin_39814378的博客
11-23 226
Python 多线程爬虫实战Queue线程安全队列解释:在线程中,访问一些全局变量,加锁是一个经常的过程。如果你是想把一些数据存储到某个队列中,那么Python内置了一个线程安全的模块叫做queue模块。Python中的queue模块中提供了同步的、线程安全的队列类,包括FIFO(先进先出)队列Queue,LIFO(后入先出)队列LifoQueue。这些队列都实现了锁原语...
爬虫爬取到标签内容有时为空有时正常,请问怎么解决?
湖北太米网络科技有限公司
11-03 1899
爬虫爬取标签内容时,遇到有时为空有时正常的情况,可能是由于以下原因导致的:网站的动态内容:某些网站使用JavaScript来加载页面内容爬虫在请求页面时可能无法获取到完整的HTML内容。这可能导致一些标签在某些时候为空。解决这个问题,你可以尝试使用Headless浏览器(如Puppeteer)来模拟浏览器行为加载动态内...
爬虫获取豆瓣top250信息(详解版)
Aaron_Yang
07-12 2004
# 拿到页面源代码 requests # 通过re来提取想要的有效信息 re # csv 数据存储 import requests import re import csv # 现在要提取名字,年份 url = "https://movie.douban.com/top250" headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) C
python按关键字爬取必应高清图片
澄南澄北的博客
09-08 3741
通过查询前人的博客,发现必应可通过url按关键字查找图片: https://www.bing.com/images/async?q=查询关键字&first=图片编号&count=图片数量&mmasync=1 基于该url,我写了一个爬虫类,实现了按关键字下载固定数量的必应高清图片。调用时只需要一条python语句即可(由于使用了线程池并发请求图片,所以下载速度较快,一分钟300张高清图片没问题): # 关键词:电脑壁纸 # 需要的图片数量:100 # 图片保存路径:'.
Python判断html的元素,python判断网页元素是否存在的方法
weixin_29094775的博客
06-15 3992
python判断网页元素是否存在的方法发布时间:2020-08-11 09:19:33来源:亿速云阅读:279作者:小新小编给大家分享一下python判断网页元素是否存在的方法,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!python判断网页元素是否存在的方法:可以利用try except语句块来进行判断。try except语句块用来捕获并处理异常,如果执行过程中出现异常,系统会自...
爬虫-爬取豆瓣图书TOP250
weixin_33863087的博客
04-17 171
import requests from bs4 import BeautifulSoup def get_book(url): wb_data = requests.get(url) soup = BeautifulSoup(wb_data.text,'lxml') title_list = soup.select('h1 > span') ...
java抓取豆瓣网页内容_爬取豆瓣网页上的电影(包括图片,评分,和简介等)
weixin_42355999的博客
02-13 1865
用Java获取页面,然后用Jsoup来得到自己想要的数据,再保存到数据库(我用了Hibernate的框架),最后用自己的网站显示这些数据豆瓣本身貌似提供了给开发者使用的接口,但是我不想去注册账号(我还没有豆瓣账号),,,就想自己通过网页源码分析,然后拿到自己想要的数据。在看豆瓣的网页源码的时候,通过用Chrome的F12分析工具中的NetWork网络分析,发现了豆瓣一个请求的接口,其返回值是Jso...
python爬虫大作业任务书_爬虫大作业
06-08
Python爬虫大作业任务书通常包含以下内容: 1. 任务背景和目的:介绍本次爬虫大作业的背景和目的,以及要爬取的网站或数据。 2. 爬虫需求和要求:明确爬虫的需求和要求,包括爬取的数据类型、爬虫的频率、数据保存方式等。 3. 爬虫流程和实现:详细介绍爬虫的流程和实现方式,包括爬虫的框架、爬虫的具体实现代码、数据的处理和存储等。 4. 数据分析和可视化:对爬取的数据进行分析和可视化,展示数据的特征和规律。 5. 总结和展望:对爬虫大作业的完成情况进行总结,指出不足和改进方向,并展望未来的发展方向和应用场景。 以上是Python爬虫大作业任务书通常包含的内容,不同的任务书可能会有所不同。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • laravel5.1学习手册[一]基本开发环境配置 1882
  • Python爬虫笔记:爬取单个页面 855
  • Python爬虫笔记:爬取豆瓣TOP250单页内容 525
  • Python爬虫笔记:开始前的准备 295
  • xss绕绕绕绕绕绕过 39

分类专栏

  • Python爬虫笔记 3篇
  • Laravel基础 1篇

最新评论

  • laravel5.1学习手册[一]基本开发环境配置

    Pr1s0n: 不好意思。。过几天更新,因为没想到真的有人看。。

  • laravel5.1学习手册[一]基本开发环境配置

    Pr1s0n: 不好意思。。过几天更新,因为没想到真的有人看。。

  • laravel5.1学习手册[一]基本开发环境配置

    lianlincheng1: 继续更新啊同志

  • laravel5.1学习手册[一]基本开发环境配置

    Weeeeei: 可以部署到php内置的服务器上来进行本地开发, php artisan serve

  • laravel5.1学习手册[一]基本开发环境配置

    Weeeeei: 博主写得挺好的, 可惜不更新了!

大家在看

  • 快速创建GitHub项目
  • 【C++进阶学习】第二弹——继承(下)——挖掘继承深处的奥秘 2134
  • 计算机组成原理 易错知识点 第一章-第四章 计算机概述;总线与存储器
  • Python面试题-4
  • 从零开始! Jupyter Notebook的安装教程

最新文章

  • xss绕绕绕绕绕绕过
  • Python爬虫笔记:开始前的准备
  • Python爬虫笔记:爬取单个页面
2023年1篇
2020年3篇
2015年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

哆哆女性网绿化公司起名四字第五元素电影属狗的和什么属相最配给蔬菜粮油店起名保定大慈阁起名哪家好灯具名字怎么起da师演员表罗字取名起名大全大全起公司名字医疗器械李姓怎么起名适合向房地产开发起名2014年属马起名女孩公司凡字起名防火板厚度音乐后期制作铜火锅店起名字大全暗黑破坏神2存档钓鱼猫张氏张姓起名杨丞琳为什么被全网封马作的卢飞快弓如霹雳弦惊西宁起名字的地方在哪迷雾百度云世界上最大的鱼带鸟的诗句金星是男生还是女生什么工作室的起名好听泊君网络科技公司起名川美style五行起名规则淀粉肠小王子日销售额涨超10倍罗斯否认插足凯特王妃婚姻不负春光新的一天从800个哈欠开始有个姐真把千机伞做出来了国产伟哥去年销售近13亿充个话费竟沦为间接洗钱工具重庆警方辟谣“男子杀人焚尸”男子给前妻转账 现任妻子起诉要回春分繁花正当时呼北高速交通事故已致14人死亡杨洋拄拐现身医院月嫂回应掌掴婴儿是在赶虫子男孩疑遭霸凌 家长讨说法被踢出群因自嘲式简历走红的教授更新简介网友建议重庆地铁不准乘客携带菜筐清明节放假3天调休1天郑州一火锅店爆改成麻辣烫店19岁小伙救下5人后溺亡 多方发声两大学生合买彩票中奖一人不认账张家界的山上“长”满了韩国人?单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#青海通报栏杆断裂小学生跌落住进ICU代拍被何赛飞拿着魔杖追着打315晚会后胖东来又人满为患了当地回应沈阳致3死车祸车主疑毒驾武汉大学樱花即将进入盛花期张立群任西安交通大学校长为江西彩礼“减负”的“试婚人”网友洛杉矶偶遇贾玲倪萍分享减重40斤方法男孩8年未见母亲被告知被遗忘小米汽车超级工厂正式揭幕周杰伦一审败诉网易特朗普谈“凯特王妃P图照”考生莫言也上北大硕士复试名单了妈妈回应孩子在校撞护栏坠楼恒大被罚41.75亿到底怎么缴男子持台球杆殴打2名女店员被抓校方回应护栏损坏小学生课间坠楼外国人感慨凌晨的中国很安全火箭最近9战8胜1负王树国3次鞠躬告别西交大师生房客欠租失踪 房东直发愁萧美琴窜访捷克 外交部回应山西省委原副书记商黎光被逮捕阿根廷将发行1万与2万面值的纸币英国王室又一合照被质疑P图男子被猫抓伤后确诊“猫抓病”

哆哆女性网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化