Python爬虫使用bs4方法实现数据解析


Posted in Python onAugust 25, 2020

聚焦爬虫:

爬取页面中指定的页面内容。

编码流程:

  • 1.指定url
  • 2.发起请求
  • 3.获取响应数据
  • 4.数据解析
  • 5.持久化存储

数据解析分类:

  • 1.bs4
  • 2.正则
  • 3.xpath (***)

数据解析原理概述:

解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储

1.进行指定标签的定位

2.标签或者标签对应的属性中存储的数据值进行提取(解析)

bs4进行数据解析数据解析的原理:

1.标签定位

2.提取标签、标签属性中存储的数据值

bs4数据解析的原理:

1.实例化一个BeautifulSoup对象,并且将页面源码数据加载到该对象中

2.通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取

环境安装:

pip install bs4 -i https://pypi.tuna.tsinghua.edu.cn/simple
pip install lxml -i https://pypi.tuna.tsinghua.edu.cn/simple

实例化BeautifulSoup对象步骤:

from bs4 import BeautifulSoup

对象的实例化:

1.将本地的html文档中的数据加载到该对象中

fp = open('./test.html','r',encoding='utf-8')
soup = BeautifulSoup(fp,'lxml')

2.将互联网上获取的页面源码加载到该对象中(常用方法,推荐)

page_text = response.text
soup = BeatifulSoup(page_text,'lxml')

提供的用于数据解析的方法和属性:

soup.tagName:返回的是文档中第一次出现的tagName对应的标签
soup.find():
find('tagName'):等同于soup.div

1.属性定位:

soup.find('div',class_/id/attr='song')
soup.find_all('tagName'):返回符合要求的所有标签(列表)
select:
select('某种选择器(id,class,标签...选择器)'),返回的是一个列表。

2.层级选择器:

soup.select('.tang > ul > li > a'):>表示的是一个层级
soup.select('.tang > ul a'):空格表示的多个层级

3.获取标签之间的文本数据:

soup.a.text/string/get_text()
text/get_text():可以获取某一个标签中所有的文本内容
string:只可以获取该标签下面直系的文本内容

4.获取标签中属性值:

soup.a['href']

案例:爬取三国演义小说所有的章节标题和章节内容代码如下:

import requests
from bs4 import BeautifulSoup

if __name__ == "__main__":
  #对首页的页面数据进行爬取
  headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
  }
  url = 'http://www.shicimingju.com/book/sanguoyanyi.html'
  page_text = requests.get(url=url,headers=headers).text

  #在首页中解析出章节的标题和详情页的url
  #实例化BeautifulSoup对象,需要将页面源码数据加载到该对象中
  soup = BeautifulSoup(page_text,'lxml')
  #解析章节标题和详情页的url
  li_list = soup.select('.book-mulu > ul > li')
  fp = open('./sanguo.txt','w',encoding='utf-8')
  for li in li_list:
    title = li.a.string
    detail_url = 'http://www.shicimingju.com'+li.a['href']
    #对详情页发起请求,解析出章节内容
    detail_page_text = requests.get(url=detail_url,headers=headers).text
    #解析出详情页中相关的章节内容
    detail_soup = BeautifulSoup(detail_page_text,'lxml')
    div_tag = detail_soup.find('div',class_='chapter_content')
    #解析到了章节的内容
    content = div_tag.text
    fp.write(title+':'+content+'\n')
    print(title,'爬取成功!!!')

运行结果:

Python爬虫使用bs4方法实现数据解析
Python爬虫使用bs4方法实现数据解析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
跟老齐学Python之变量和参数
Oct 10 Python
python实现的jpg格式图片修复代码
Apr 21 Python
基于python时间处理方法(详解)
Aug 14 Python
python绘制双柱形图代码实例
Dec 14 Python
python PyTorch参数初始化和Finetune
Feb 11 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
Django框架视图函数设计示例
Jul 29 Python
python实现猜数字游戏
Mar 25 Python
如何基于Python批量下载音乐
Nov 11 Python
pytorch实现线性拟合方式
Jan 15 Python
Python趣味挑战之教你用pygame画进度条
May 31 Python
Python OpenCV实现图像模板匹配详解
Apr 07 Python
Python+Opencv身份证号码区域提取及识别实现
Aug 25 #Python
Python Selenium实现无可视化界面过程解析
Aug 25 #Python
一文读懂Python 枚举
Aug 25 #Python
详解python变量与数据类型
Aug 25 #Python
python获取百度热榜链接的实例方法
Aug 25 #Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 #Python
python实现自动清理重复文件
Aug 24 #Python
You might like
PHP生成压缩文件实例
2015/02/07 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
javascript 简单高效判断数据类型 系列函数 By shawl.qiu
2007/03/06 Javascript
看了就知道什么是JSON
2007/12/09 Javascript
ExtJS 设置级联菜单的默认值
2010/06/13 Javascript
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
js实现类似MSN提示的页面效果代码分享
2015/08/24 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JS实现滑动门效果的方法详解
2016/12/19 Javascript
JS闭包与延迟求值用法示例
2016/12/22 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
JS实现json对象数组按对象属性排序操作示例
2018/05/18 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
JavaScript ES6中的简写语法总结与使用技巧
2018/12/30 Javascript
vue仿携程轮播图效果(滑动轮播,下方高度自适应)
2021/02/11 Vue.js
js实现简单图片拖拽效果
2021/02/22 Javascript
Python实现选择排序
2017/06/04 Python
python如何制作缩略图
2019/04/30 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
keras中的卷积层&池化层的用法
2020/05/22 Python
纯CSS3实现3D旋转书本效果
2016/03/21 HTML / CSS
纯CSS绘制漂亮的圆形图案效果
2014/05/07 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
HTML5制作酷炫音频播放器插件图文教程
2014/12/30 HTML / CSS
英国著名音像制品和图书游戏购物网站:Zavvi
2016/08/04 全球购物
英国女性时尚精品店:THE DRESSING ROOM
2018/05/23 全球购物
新西兰购物网站:TheMarket NZ
2020/09/19 全球购物
上海方立数码笔试题
2013/10/18 面试题
《两个铁球同时着地》教学反思
2014/02/13 职场文书
四议两公开实施方案
2014/03/28 职场文书
职位说明书范文
2014/05/07 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
县委班子四风对照检查材料思想汇报
2014/09/29 职场文书
小学校园广播稿集锦
2014/10/04 职场文书
jquery插件实现图片悬浮
2021/04/16 jQuery
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle