数据解析——bs4解析

1. 环境安装

1.1 打开系统打开cmd指令输入 pip install bs4

成功指示如下
在这里插入图片描述

1.2 出现 Retrying (Retry(total=4, connect=None, read=None, redirect=None, status=None) 的解决方案

将安装源换成国内的即可,指令可输入如下
pip install bs4 -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

2. 相关方法

使用流程:
- 导包:from bs4 import BeautifulSoup
- 使用方式:可以将一个html文档,转化为BeautifulSoup对象,然后通过对象的方法或者属性去查找指定的节点内容
- html可以通过requests.get(url).text 获得
(1)将html转化为 BeautifulSoup 对象进行使用
soup = BeautifulSoup(html, ‘lxml’)
(2)利用 BeautifulSoup的相关方法进行筛选

2.1 比如筛选一个标签如:<a> 下的相关方法

(1)根据标签名查找
    - soup.a   只能找到第一个符合要求的标签
(2)获取属性
    - soup.a.attrs  获取a所有的属性和属性值,返回一个字典
    - soup.a.attrs['href']   获取href属性
(3)获取其标签内的内容
    - soup.a.string
    - soup.a.text
    - soup.a.get_text()
   【注意】如果标签还有标签,那么string获取到的结果为None,而其它两个,可以获取文本内容
(4)find:找到第一个符合要求的标签
    - soup.find('a')  找到第一个符合要求的
    - soup.find('a', title="xxx")
    - soup.find('a', alt="xxx")
    - soup.find('a', class_="xxx")
    - soup.find('a', id="xxx")
(5)find_all:找到所有符合要求的标签
    - soup.find_all('a')
    - soup.find_all(['a','b']) 找到所有的a和b标签
    - soup.find_all('a', limit=2)  限制前两个
(6)根据选择器选择指定的内容
           select:soup.select('#feng')
    - 常见的选择器:标签选择器(a)、类选择器(.)、id选择器(#)、层级选择器
        - 层级选择器:
            div .dudu #lala .meme .xixi  下面好多级
            div > p > a > .lala          只能是下面一级
    【注意】select选择器返回永远是列表,需要通过下标提取指定的对象

3. 进行实战(获取一个代理ip网的相关信息)

3.1 分析目标在哪个标签

import requests
url = 'http://www.ip3366.net/'
response = requests.get(url=url)
response.encoding = 'gb2312'
html = response.text
print(html)

在这里插入图片描述

3.2 分析可知其在div标签

from bs4 import BeautifulSoup
soup = BeautifulSoup(html,'lxml')
div = soup.find('div',id='list' )
print(div)

从而得到如下的html
在这里插入图片描述

3.3 最后进行目标内容的提取

注意div后是id,故选择器用 ‘#’

data_list = div.select('#list tr')  # 返回的是一个列表
for data in data_list[1:]:
    print(data.text)

输出内容:
在这里插入图片描述

小结:

使用bs4解析数据,第一步就是将html转为bs4.BeautifulSoup的类型,然后通过find方法找到内容具体的标签,最后再通过select方法进行选择相关所需内容

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值