Python爬虫教程-24-数据提取-BeautifulSoup4(二)

Python爬虫教程-24-数据提取-BeautifulSoup4(二)

本篇介绍 bs 如何遍历一个文档对象

遍历文档对象

  • contents:tag 的子节点以列表的方式输出
  • children:子节点以迭代器形式返回
  • descendants:所有子孙节点
  • string:用string打印出标签的具体内容,不带有标签,只有内容
  • 案例代码27bs3.py文件:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py27bs3.py
# BeautifulSoup 的使用案例
# 遍历文档对象

from urllib import request
from bs4 import BeautifulSoup

url = ‘http://www.baidu.com/‘

rsp = request.urlopen(url)
content = rsp.read()

soup = BeautifulSoup(content, ‘lxml‘)

# bs 自动解码
content = soup.prettify()

print("=="*12)
# 使用 contents
for node in soup.head.contents:
    if node.name == "meta":
        print(node)
    if node.name == "title":
        print(node.string)
print("=="*12)

运行结果

常用string打印出标签的具体内容,不带有标签,只有内容

当然,如果觉得遍历太耗费资源,没有必要遍历的时候,可以使用搜索

搜索文档对象

  • find_all(name, attrs, recursive, text, ** kwargs)

    • 使用find_all(),返回的列表格式,也就是说如果 find_all(name=‘meta‘) ,如果有多个 meta 就以列表形式返回
    • name 参数:按照哪个字符搜索,可以传入的内容为
      • 1.字符串
      • 2.正则表达式,使用正则需要编译:

        例如:我们需要打印所有以 me 开头的标签内容

        tags = soup.find_all(re.compile(‘^me‘))

      • 3.也可以是列表
  • keyword 参数,可以用来表示属性
  • text:对应 tag 的文本值
  • 案例代码27bs4.py文件:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py27bs4.py
# BeautifulSoup 的使用案例
# 搜索文档对象

from urllib import request
from bs4 import BeautifulSoup
import re

url = ‘http://www.baidu.com/‘

rsp = request.urlopen(url)
content = rsp.read()

soup = BeautifulSoup(content, ‘lxml‘)

# bs 自动解码
content = soup.prettify()

# 使用 find_all
# 使用 name 参数
print("=="*12)
tags = soup.find_all(name=‘link‘)
for i in tags:
    print(i)

# 使用正则表达式
print("=="*12)
# 同时使用两个条件
tags = soup.find_all(re.compile(‘^me‘), content=‘always‘)
# 这里直接打印 tags 会打印一个列表
for i in tags:
    print(i)

运行结果

因为使用两个条件,所以只匹配到一条 meta

下一篇介绍,BeautifulSoup 的 css 选择器

拜拜


- 本笔记不允许任何个人和组织转载

Python爬虫教程-24-数据提取-BeautifulSoup4(二)

原文地址:https://www.cnblogs.com/xpwi/p/9600957.html

时间: 2024-10-07 00:04:39

Python爬虫教程-24-数据提取-BeautifulSoup4(二)的相关文章

Python爬虫教程-25-数据提取-BeautifulSoup4(三)

Python爬虫教程-25-数据提取-BeautifulSoup4(三) 本篇介绍 BeautifulSoup 中的 css 选择器 css 选择器 使用 soup.select 返回一个列表 通过标签名称:soup.select("title") 通过类名:soup.select(".centent") id 查找:soup.select("#name_id") 组合查找:soup.select("div #input_content

Python爬虫教程-31-创建 Scrapy 爬虫框架项目

本篇是介绍在 Anaconda 环境下,创建 Scrapy 爬虫框架项目的步骤,且介绍比较详细 Python爬虫教程-31-创建 Scrapy 爬虫框架项目 首先说一下,本篇是在 Anaconda 环境下,所以如果没有安装 Anaconda 请先到官网下载安装 Anaconda 下载地址:https://www.anaconda.com/download/ Scrapy 爬虫框架项目的创建 0.打开[cmd] 1.进入你要使用的 Anaconda 环境 1.环境名可以在[Pycharm]的[Se

Python爬虫教程-30-Scrapy 爬虫框架介绍

从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框架: scrapy pyspider crawley Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中 Scrapy 官方文档 https://doc.scrapy.org/en/latest/ http://sc

Python爬虫教程-26-Selenium + PhantomJS

Python爬虫教程-26-Selenium + PhantomJS 动态前端页面 : JavaScript: JavaScript一种直译式脚本语言,是一种动态类型.弱类型.基于原型的语言,内置支持类型.它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用来给HTML网页增加动态功能 jQuery: jQuery是一个快速.简洁的JavaScript框架,是继Prototype之后又一个优秀的Jav

python爬虫教程:《利用Python爬取表情包》

python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!老师带领你使用多线程爬虫一键爬取20w的表情包~ python爬虫教程:<利用Python爬取表情包>,微信没有表情包?不用愁!

Python 爬虫 之 阅读呼叫转移(二)

上一篇博客我们成功地从网页上爬下了小说的一个章节,理所当然地,接下来我们要把整本小说都爬下来.首先,我们要把程序从原来的读完一章就结束,改成读完一章之后可以继续进行下一章的阅读. 注意到每个小说章节的网页下面都有下一页的链接.通过查看网页源代码,稍微整理一下(  不显示了),我们可以看到这一部分的 HTML 是下面这种格式的: <div id="footlink"> <script type="text/javascript" charset=&q

Python爬虫教程-09-error 模块

Python爬虫教程-09-error模块 今天的主角是error,爬取的时候,很容易出现错,所以我们要在代码里做一些,常见错误的处,关于urllib.error URLError URLError 产生的原因: 1.无网络连接 2.服务器连接失败 3.找不到指定的服务器 4.URLError是OSError的子类 案例v9文件:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py09error.py # 案例v9 # URLError的使用 fro

Python爬虫教程-08-post介绍(百度翻译)(下)

Python爬虫教程-08-post介绍(下) 为了更多的设置请求信息,单纯的通过urlopen已经不太能满足需求,此时需要使用request.Request类 构造Request 实例 req = request.Request(url=baseurl,data=data,headers=header) 发出请求 rsp = request.urlopen(req) 文件: 案例v8文件:https://xpwi.github.io/py/py%E7%88%AC%E8%99%AB/py08po

Python爬虫教程-27-Selenium Chrome版本与chromedriver兼容版本对照表

我们使用Selenium+Chrome时,版本不一样, 会导致 chromedriver 停止运行 chromedriver 所有版本下载链接:http://npm.taobao.org/mirrors/chromedriver/ 请根据下面表格下载支持自己 Chrome 的版本 Selenium Chrome版本与chromedriver兼容版本对照表 ChromeDriver 版本 支持的 Chrome 版本 ChromeDriver v2.41 (2018-07-27) Supports