您好,欢迎来到汇意旅游网。
搜索
您的当前位置:首页爬虫之解析库BeautifulSoup

爬虫之解析库BeautifulSoup

来源:汇意旅游网
爬⾍之解析库BeautifulSoup

介绍

Beautiful Soup是python的⼀个库,最主要的功能是从⽹页抓取数据。官⽅解释如下:

Beautiful Soup提供⼀些简单的、python式的函数⽤来处理导航、搜索、修改分析树等功能。它是⼀个⼯具箱,通过解析⽂档为⽤户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出⼀个完整的应⽤程序。

Beautiful Soup⾃动将输⼊⽂档转换为Unicode编码,输出⽂档转换为utf-8编码。你不需要考虑编码⽅式,除⾮⽂档没有指定⼀个编码⽅式,这时,Beautiful Soup就不能⾃动识别编码⽅式了。然后,你仅仅需要说明⼀下原始编码⽅式就可以了。Beautiful Soup已成为和lxml、html6lib⼀样出⾊的python解释器,为⽤户灵活地提供不同的解析策略或强劲的速度。

使⽤⽅法

(1) 根据标签名查找

- suop.a 只能找到第⼀个符合要求的标签(2) 获取属性值

- suop.a.attrs 获取a所有的属性和属性值,返回⼀个字典 - suop.a.attrs[\"href\"] 获取href属性值 - suop.a[\"href\"] 简写为这种形式(3) 获取内容

- suop.a.string 获取标签中直系的⽂本内容 - suop.a.text 获取所有标签中的⽂本内容 - suop.a.get_text() 获取所有标签中的⽂本内容

【注意】如果标签中还有标签,那么string获取到的结果为None,其他两个⽅法可以获取到⽂本内容(4) find 找到第⼀个符合要求的标签

- suop.find(\"a\") 找到第⼀个符合要求的 # 根据标签中的属性获取指定的a标签

- suop.find(\"a\是关键字需要加_ - suop.find(\"a\ - suop.find(\"a\ - suop.find(\"a\ - suop.find(\"a\ # 可以和获取内容的⽅法连⽤

- suop.find(\"a\(5) find_all 找到所有符合要求的标签 - suop.find_all(\"a\")

- suop.find_all([\"a\找到所有a标签和p标签 - suop.find_all([\"a\取前两个(6) 根据选择器选择指定的内容 select:suop.select(\"#id\")

- 常见的选择器:标签选择器(a)|类选择器(.)|id选择器(#)|层级选择器 - 层级选择器:

div .mm div下⾯所有class属性值为mm的,⼦⼦孙孙,下⾯多级 div > .dd div⼉⼦级class属性为dd的,下⾯⼀级 【注意】查询到的是所有数据,返回列表

项⽬演⽰

import requestsimport lxml

from bs4 import BeautifulSoup

url = \"http://www.shicimingju.com/book/sanguoyanyi.html\"response = requests.get(url).text

suop = BeautifulSoup(response,'lxml') # 实例化对象,使⽤lxml进⾏解析a_list = suop.select('.book-mulu > ul > li > a')url = \"http://www.shicimingju.com\"for a in a_list:

fiction_name = a.string # ⼩说章节名称 fiction_url = url+a[\"href\"] # ⼩说章节url地址

response = requests.get(fiction_url).text # 请求每个章节的url地址 suop = BeautifulSoup(response,'lxml')

content = suop.find(\"div\获取标签内所有⽂本数据 with open(\"./{}.txt\".format(fiction_name),\"w\ fp.write(content)print(\"下载成功\")

select选择器选择a标签中的⽂本内容和gref属性

效果

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务