Python学习日志——爬虫(二)复杂HTML解析:Beautifulsoup、正则表达式

本文介绍了Python中的BeautifulSoup库用于解析HTML和XML文档,详细讲解了BeautifulSoup的四种核心对象以及如何利用find()和findAll()查找标签。此外,还探讨了正则表达式的使用,包括编译正则表达式对象和常见方法,如忽略大小写匹配和多行模式等。

 

一、beautifulsoup简介

1.beautifulsoup库为第三方库,需要自行安装

pip install beautifulsoup4

2.Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能,通过解析文档为用户提供需要抓取的数据,不需要太多代码就可以写出一个完整的应用程序。

3.Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码,因此不需要考虑编码方式,若文档没有指定一个编码方式,就需要说明一下原始编码方式。

简言之,BeautifulSoup是一个可以从HTML或XML文件中提取数据的Python库,它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式。

二、beautifulsoup的四个对象 

beautifulsoup所有对象可以归纳为4种: Tag , NavigableString , BeautifulSoupComment .

(1)BeautifulSoup:表示一个文档的全部内容

import urllib.request as ur
from bs4 import BeautifulSoup
html = ur.urlopen("http://bj.ganji.com/zpshichangyingxiao/")  #获取链接响应,得到一个HTML字符串
bsObj = BeautifulSoup(html.read(),"html.parser")  #解析得到的字符串,"html.parser"表示按照HTML进行解析
print(bsObj.h1)

#<h1>北京销售全职招聘</h1>

可以得到第一个<h1>标签

(2)Tag:与XML或HTML原生文档中的Tag相同,表示标签中的内容。

(3)NavigableString:获取标签内部的文字。

(4)Comment:查找HTML文档的注释标签。

三、快速查找最需要的标签:find()、findAll()

find(self, name=None, attrs={}, recursive=True, text=None,**kwargs)
findAll(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)

注:find()函数只获取查找到的第一个标签,findAll()获取HTML中所有该标签

属性:①self:代表当前对象,编程时不需要处理

           ②name:代表需要解析的标签名

           ③attrs:代表需要解析标签的属性,需要输入键值对。可以同时对同一属性的多个条件进行解析。例:

bsObj.findAll("a",{"class":{" a-circle-on",""}})

上述代码可同时对class属性的多个条件进行筛选。

            ④recursive:是一个布尔变量,默认为True。如果为True,findAll就会查找HTML代码中所有你想要查找的标签。如果为False,只查找文档的一级标签,即<html>标签。

print(bsO
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值