本文以豆瓣首页搜索图书、电影等结果页面为例,使用python的BeautifulSoup解析页面内标题、作者、出版社、评分、简介、缩略图等内容,并转成json格式进行存储。
声明:本文仅作学习python对html解析方法的交流使用,不针对特定网站。

首先我们通过豆瓣首页搜索python,点击书籍的分类,F12查看页面元素。

我们通过CTR+F 查询到页面中搜索的结果都在result-list下的<div class="result">标签中。

所以下面我们的思路就是循环取出该标签,并提取相应元素。
(在此页面搜索结果展示其实是不全的,还有个显示更多的问题,本文重点在页面解析,获取更多的操作暂不做讨论。)

  <div class="result"><div class="pic"><a class="nbg" href="https://www.douban.com/link2/?url=https%3A%2F%2Fbook.douban.com%2Fsubject%2F26829016%2F&amp;query=python&amp;cat_id=1001&amp;type=search&amp;pos=0" target="_blank" onclick="moreurl(this,{i: '0', query: 'python', from: 'dou_search_book', sid: 26829016, qcat: '1001'})" title="Python编程" ><img src="https://img9.doubanio.com/view/subject/s/public/s28891775.jpg"></a></div><div class="content"><div class="title"><h3><span>[书籍]</span>&nbsp;<a href="https://www.douban.com/link2/?url=https%3A%2F%2Fbook.douban.com%2Fsubject%2F26829016%2F&amp;query=python&amp;cat_id=1001&amp;type=search&amp;pos=0" target="_blank" onclick="moreurl(this,{i: '0', query: 'python', from: 'dou_search_book', sid: 26829016, qcat: '1001'})" >Python编程 </a><span class="ic-mark ic-book-mark">可试读</span><span class="ic-mark ic-read-mark">有电子版</span></h3><div class="rating-info"><span class="allstar45"></span><span class="rating_nums">9.1</span><span>(3657人评价)</span><span class="subject-cast">[美] 埃里克·马瑟斯 / 袁国忠 / 人民邮电出版社 / 2016</span></div></div><p>本书是一本针对所有层次的Python 读者而作的Python 入门书。全书分两部分:第一部分介绍用Python 编程所必须了解的基本概念,包括matplotlib、NumPy 和Pygal 等强大的Py...</p></div></div>

初步分析后,我们开始代码实操:
先定义一个方法获取当前页面的html代码,然后对每个元素进行解析

import requests
from bs4 import BeautifulSoup
import json# 通过url获取html数据
def fromUrlToHtml(url,pathName):# 请求头headers = {'User-Agent':'Mozilla/5.0 (Macintoosh; Intel Mac OS X 101_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}# 发送请求res  = requests.get(url = url,headers = headers)status = res.status_codeprint(status)if status == 200:# print(res.content.decode('utf-8'))with open('./' + pathName +'.html','w',encoding = 'utf8') as fp:fp.write(res.content.decode('utf-8'))# 解析获取的html数据
def fromHtmlToJson(pathName):# 创建一个 beautifulsoup对象,指定解析器为lxmlfp = open('./' + pathName +'.html','r',encoding='utf-8')soup = BeautifulSoup(fp,'lxml')# print(soup)a = soup.select('.result')data = []num = len(a)for i in range(0,num):# 将result的内容转成soup对象soupA = BeautifulSoup(str(a[i]),'lxml')# 获取详情页urlurl = soupA.find(class_="nbg").attrs['href']# 获取图片地址picUrl = soupA.find("img").attrs['src']# 获取标题title = soupA.find("a").attrs['title']# 获取评分ratingNum = soupA.find(class_ = 'rating_nums')# 获取作者\出版信息等subject = soupA.find(class_ = 'subject-cast')# 获取内容简介summary = soupA.find("p")# 空值处理if(None == ratingNum):ratingNum = "暂无评分"else:ratingNum = "豆瓣评分:" + ratingNum.textif (None == subject):subject = "暂无信息"else:subject = subject.textif (None == summary):summary = "暂无简介"else:summary = summary.text.replace("\n","")dict = {"id":str(i+1),"type": "图书", "title": title, "subject": subject, "ratingNum": ratingNum, "url": url,"picUrl": picUrl, "summary": summary}data.append(dict)print("共计" + str(num) + "条,第" +str(i+1)+ "条解析成功")# print(data)# 以JSON格式写入数据with open('./'+ pathName +'.json', 'w', encoding='utf-8') as fp:json.dump(data, fp, ensure_ascii=False)print("写入json成功")if __name__ == '__main__':url = "https://www.douban.com/search?cat=1001&q=python"pathName = "bookSearch"fromUrlToHtml(url,pathName)fromHtmlToJson(pathName)

运行后控制台打印结果,证明数据解析成功

共计20条,第1条解析成功
共计20条,第2条解析成功
共计20条,第3条解析成功
共计20条,第4条解析成功
共计20条,第5条解析成功
共计20条,第6条解析成功
共计20条,第7条解析成功
共计20条,第8条解析成功
共计20条,第9条解析成功
共计20条,第10条解析成功
共计20条,第11条解析成功
共计20条,第12条解析成功
共计20条,第13条解析成功
共计20条,第14条解析成功
共计20条,第15条解析成功
共计20条,第16条解析成功
共计20条,第17条解析成功
共计20条,第18条解析成功
共计20条,第19条解析成功
共计20条,第20条解析成功
写入json成功

查看数据:

python爬取豆瓣书籍、电影等搜索结果,并解析html转成json格式相关推荐

  1. python 爬取豆瓣top100电影页面

    python 爬取豆瓣top100电影页面 运行结果截图: 代码: (原网站:https://movie.douban.com/top250) 1.将页面保存 避免多次访问 (登陆状态需页面cooki ...

  2. python爬取豆瓣排行榜电影(静态爬取)(二次爬取)

    目录 python爬取豆瓣排行榜电影(静态爬取) 获取网站url 获取网站headers get请求访问url BeautifulSoup解析网站 爬取html数据 完整代码 python爬取豆瓣排行 ...

  3. Python爬取豆瓣Top250电影中2000年后上映的影片信息

    Python爬取豆瓣Top250电影中2000年后上映的影片信息 前言 双十一前加在京东购物车的一个东西,价格330,Plus会员用券后差不多310.双十一当天打开看了下399,还得去抢满300减10 ...

  4. Python爬取豆瓣Top250电影可见资料并保存为excel形式

    Python爬取豆瓣Top250电影可见资料并保存为excel形式 利用requests第三方库实现网页的元素爬取,再使用openpyxl库进行信息的录入. 具体思路 1.分析网页的headers. ...

  5. python爬取豆瓣书籍_python 爬取豆瓣书籍信息

    继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...

  6. python 爬取豆瓣书籍信息

    继爬取 猫眼电影TOP100榜单 之后,再来爬一下豆瓣的书籍信息(主要是书的信息,评分及占比,评论并未爬取).原创,转载请联系我. 需求:爬取豆瓣某类型标签下的所有书籍的详细信息及评分 语言:pyth ...

  7. python爬取豆瓣书籍_Python利用lxml模块爬取豆瓣读书排行榜的方法与分析

    前言 上次使用了BeautifulSoup库爬取电影排行榜,爬取相对来说有点麻烦,爬取的速度也较慢.本次使用的lxml库,我个人是最喜欢的,爬取的语法很简单,爬取速度也快. 本次爬取的豆瓣书籍排行榜的 ...

  8. python爬取豆瓣书籍_Python 爬取豆瓣读书标签下的书籍

    这几天想爬下豆瓣读书时发现 github 上他人分享的源码都有一定年份了,豆瓣读书的页面貌似也稍微改了,于是就在前人轮子的基础上改进一下重新爬下豆瓣读书.Python 版本是 3.7. 1.爬取信息 ...

  9. Python爬取豆瓣Top250电影排名

    # -*- codeing = utf-8 -*- # @Time: 2021/12/27 14:30 # @Author: 买欣怡 # @File: 7. spider-豆瓣.py # @Softw ...

最新文章

  1. mega_[MEGA DEAL]完整的Android开发人员课程–构建14个应用程序(91%折扣)
  2. monty python喜剧-如何评价英国喜剧团体 Monty Python?
  3. 每日一博 - Review线程池_02
  4. matplotlib动画入门(1):基本概念
  5. 商品管理后台html,商品类型管理.html
  6. PHP发微信消息必须开网吗,关于php微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题...
  7. 什么软件可以修改PDF,PDF如何添加页码
  8. origin拟合曲线,并绘制曲线上某一点的切线
  9. 反垃圾邮件企业邮箱设置(TXT记录)
  10. x-杂项-maven-repository-lombok-intro:使用PROJECT LOMBOK减少BOILERPLATE代码
  11. CICE海冰模式的编译
  12. 海上垂直无人机垂直起降平台
  13. 使用VMware备份操作系统
  14. java点到直线距离_求取点到直线的距离
  15. PHP 运行方式详解
  16. 下载yahoo股票历史数据
  17. pycharm重新使用30天_Python 最强编辑器详细使用指南
  18. jenkins git can't work ERROR: Timeout after 10 minutes ERROR: Error fetching remote repo 'origin'
  19. 用VBS控制鼠标,在Excel2010、2013,64位中
  20. JS中同步和异步问题及其区别

热门文章

  1. 平面上任意椭圆与点的位置关系
  2. Redis高级项目实战,docker加载镜像tar包
  3. 证券期货行业信息系统运维管理规范
  4. 【Element】卸载Element
  5. 【SSD论文解读】 论文中用到的数据集:Pascal VOC、MS COCO、ImageNet
  6. C语言DAY11 - 指针patr1
  7. (已更新)最新版本梦想贩卖机2.0.4小程序源码
  8. 各种数据库的连接信息
  9. 什么是光耦电路,实际使用中应该注意些什么?
  10. 一道有趣的C++面试题