一. bs4的使用

1.html页面解析的方法

"""
1)正则表达式     -   出神入画的正则;不懂前端(re)
2)通过css选择器选中标签  -   熟悉css选择器;熟悉jQuery(bs4,pyQuery)
3)通过xpath获取标签   -   熟悉html结构和标签(lxml)
"""
from bs4 import BeautifulSoup
import requests
# 准备数据
def get_data():with open('files/安居客.html', encoding='utf-8') as f:return f.read()

2.bs4的使用
1)根据网页内容创建解析器对象

# BeautifulSoup(网页内容, 解析器类型)
# 网页内容  -   html格式的字符串;一般是通过requests或者selenium获取页面数据
# bs4有网页纠错功能soup = BeautifulSoup(get_data(), 'lxml')

2)根据css选择器获取标签

"""
bs对象.select(css选择器) -   获取选择器选中的标签
bs对象.select_one(css选择器) -   获取选择器中的第一个标签
"""
houses_name_els = soup.select('.items-name')
print(houses_name_els)houses_details = soup.select('.favor-pos')

3)根据属性和内容获取标签

# a.标签内容
# 标签对象.string   -   若有子标签则返回None
# 标签对象.get_text()   -   将子标签中的内容与需要取的标签内容一起取到并拼接成一个字符串
# 标签对象.contents -   如果有其中有子标签会将子标签一起取到(返回的是列表)for item in houses_name_els:print(item.string)   # None# print(item.get_text())   # 新都多弗成都奥特莱斯# print(item.contents)   # [<span>新都</span>, '多弗成都奥特莱斯']
# b.标签属性值
# 标签对象.attrs[属性名]
for x in houses_details:print(x.attrs['href'])
# 练习:获取价格和图片
print('=============================')
prices = soup.select('.price')
for x in prices:print(x.get_text())imgs = soup.select('.pic > img')
for x in imgs:print(x.attrs['src'])
# 4)获取标签内容和属性
# a.find_all(attrs={属性1:属性值1, 属性2:属性值2,...})  -  获取指定属性是指定值的所有标签
houses_price = soup.find_all(attrs={'class': 'price'})
for x in houses_price:print(x.get_text())

二. bs4的应用

from bs4 import BeautifulSoup# 准备数据
def get_data():with open('files/安居客.html', encoding='utf-8') as f:return f.read()def analysis_data(data):soup = BeautifulSoup(data, 'lxml')# 获取所有楼盘对应的divhouse_boxs = soup.select('.list-results .item-mod')all_house = []for h_div in house_boxs:name_tag = h_div.select_one('.items-name')price_tag = h_div.select_one('.price')pic_tag = h_div.select_one('.pic>img')house = {'name': name_tag.get_text() if name_tag else None,'price': price_tag.get_text() if price_tag else None,'pic_url': pic_tag.attrs['src'] if pic_tag else None}all_house.append(house)print(all_house)if __name__ == '__main__':analysis_data(get_data())

三. pyQuery的使用

from pyquery import PyQuery
# 准备数据
def get_data():with open('files/安居客.html', encoding='utf-8') as f:return f.read()

1.创建PyQuery对象

# PyQuery(html格式的字符串)
# doc指向html标签
doc = PyQuery(get_data())

2.获取标签

# PyQuery对象(css选择器)     -   选中css选择器选中的标签,返回PyQuery对象
names = doc('.items-name')
print(names)

3.获取标签内容

# PyQuery对象.text()
# 直接操作PyQuery对象会直接作用于这个对象中所有的标签
print(names.text())# 遍历PyQuery对象得到的是这个容器中的每个标签
for x in names:# x  -  标签# PyQuery(x)  -  标签对应的jQuery对象print(x, PyQuery(x).text())

4.获取标签属性

# 1)value属性
# PyQuery对象.val()# 2)普通属性
# PyQuery对象.attr(属性名)
result = doc('.pic>img')
for x in result:print(PyQuery(x).attr('src'))

四. pyQuery的应用

from pyquery import PyQuery# 准备数据
def get_data():with open('files/安居客.html', encoding='utf-8') as f:return f.read()def analysis_data(data):doc = PyQuery(data)all_hous_tag = doc('.key-list.imglazyload>.item-mod')for x in all_hous_tag:pq_x = PyQuery(x)name = pq_x('.items-name').text()area = pq_x('.building-area').text()price = pq_x('.price').text()title = pq_x('.group-mark.soj').text()house = {'name': name,'area': area,'price': price,'title': title}print(house)if __name__ == '__main__':analysis_data(get_data())

小白学习爬虫的第三天之数据解析bs4与pyQuery的使用相关推荐

  1. Python爬虫初学三(网络数据解析)

    目录 1.学习正则表达式的原因 2.什么是正则表达式 3.正则表达式匹配规则 4.正则实现步骤 5.Pattern 对象 6.正则模块常量 7.Match 对象 8.search 9.findall和 ...

  2. 第三章:数据解析---聚焦爬虫

    文章目录 第三章:数据解析---聚焦爬虫 注:本页示例所用的test.html文档 一.编码流程 二.数据解析分类 三.数据解析原理概述 四.bs4要点 1.bs4数据解析原理: 2.相关属性: 五. ...

  3. python爬虫实战之旅( 第三章:数据解析(xpath法))

    上接:第三章:数据解析(bs4法) 下接:第四章:验证码识别 1.xpath解析简介 最常用且最便捷高效的一种解析方式.通用性很好 xpath解析原理 实例化一个etree的对象,且需要将被解析的页面 ...

  4. python爬虫实战之旅( 第三章:数据解析(bs4法))

    上接:第三章:数据解析(正则法) 下接:第三章:数据解析(xpath法) 1.数据解析步骤 标签定位 提取标签,标签属性中存储的数据值 2.bs4数据解析的原理 实例化一个BeautifulSoup对 ...

  5. 数据清洗的基本流程_数据分析小白学习之路(三)——Excel多练熟能生巧

    谈到数据分析,我们可能第一时间想到python.SQL.Tableau.帆软.R等,但是这些软件.语言要入门掌握.系统学习起来耗时较长.这时候不得不提到excel这个"平平无奇数分小能手&q ...

  6. excel取整函数_数据分析小白学习之路(三)——Excel多练熟能生巧

    谈到数据分析,我们可能第一时间想到python.SQL.Tableau.帆软.R等,但是这些软件.语言要入门掌握.系统学习起来耗时较长.这时候不得不提到excel这个"平平无奇数分小能手&q ...

  7. Unity网络(三)-服务器数据解析

    正所谓:网络姻缘一线牵,Json与XML来相伴. 欢迎关注公众号:雷潮课堂 服务器数据解析 一.服务器返回的数据格式 1-1为什么要学会数据解析 1-2服务器返回的数据 二.Json 2-1什么是Js ...

  8. 2 爬虫 数据解析(bs4,XPath) robots协议 cookie反爬 代理反爬

    爬虫 1 数据解析 1.1 介绍 1.1.1 概念即作用 数据解析就是将一组数据中的局部数据进行提取,用于实现聚焦爬虫. 聚焦爬虫是建立在通用爬虫的基础上,从通用爬虫获取的整个源码数据中提取出指定的数 ...

  9. 【小白学习PyTorch教程】三、Pytorch中的NN模块并实现第一个神经网络模型

    「@Author:Runsen」 在PyTorch建立模型,主要是NN模块. nn.Linear nn.Linear是创建一个线性层.这里需要将输入和输出维度作为参数传递. linear = nn.L ...

最新文章

  1. java实时获取android网速_获取Android网速的另一种方法
  2. 根据相机外参实现单应矩阵计算的理论与实践
  3. 项目部署时网关怎么回事_使用Kubernetes部署聊天网关(或技术按预期运行时)...
  4. 201671010436 王雪刚 实验四 《英文文本统计分析》结对项目报告
  5. Web 应用服务器端渲染入门指南
  6. Marshal在C#中的应用(void *指针到IntPtr的转化)
  7. mfc中的.rc和.rc2出错fatal error RC1015: cannot open include file 'res\ModalD
  8. php属性赋值吗,php – 设置类中属性的默认值
  9. 虚拟机linux扩展磁盘容量,kvm虚拟机扩展磁盘容量
  10. 数据挖掘算法-矩阵分解在推荐系统中的应用
  11. Access2007数据库下载地址与AccessHelper
  12. cmdn(聪明的女人)
  13. Python爆破RAR密码
  14. 四种常见的颜色模式及各自的特点?
  15. 全量查询与分页查询合二为一的思考
  16. 超鸿蒙 混希夷 寂寥,下列句子与“故凡为愚者.莫我若也 的句式不同的一项是 A.超鸿蒙.混希夷.寂寥而莫我知也 B.而良人未之知也 C.及长.不省所怙.惟兄嫂是依 D.王语暴以好乐...
  17. QT中的explicit关键字的意思
  18. .mp4视频测试地址
  19. 学习国家颁布的三部信息安全领域法律,理解当前工作中的信息安全合规要求
  20. 墨者学院—Webmin未经身份验证的远程代码执行(简单复习)

热门文章

  1. 移动开发唱衰,iOS开发者如何涅槃重生?
  2. Android Unable to delete file: build\intermediates\manifests\full\debug\AndroidManifest.xm
  3. Linux上接收广播
  4. CAR-T细胞治疗最新进展(2021年12月)
  5. STorM32 BGC 相关
  6. ov5640帧率配置_vivo S7e游戏测试:三款热门游戏,帧率表现如何?
  7. 发热内衣的优势在哪里
  8. TiDB监控pd面板显示:Region Health: empty-regin-count很多,怎么回收empty-regin?
  9. 压缩包里面excel 导出 (跨行跨列)
  10. 计算机科学的影响因子,影响因子最高的计算机科学期刊(前50种).doc