BeautifulSoup详解
文章目录
- 1.下载安装
- 2.导入
- 3.装载HTML文档
- 4.将文档数转换成字符串格式
- 5.BeautifulSoup查找文档元素
- 6.BeautifulSoup遍历文档树
- 7.BeautifulSoup使用css语法查找元素
- 9.字符编码问题
- 8.实例:爬取中国天气网数据兰州7天的
1.下载安装
pip install bs4
2.导入
from bs4 import BeautifulSoup as bs
3.装载HTML文档
soup = bs(doc, 'lxml')
#doc是一个HTML文档字符串,可以自动补全 lxml是指定该文档的解析方式 python自带的解析器是parser
4.将文档数转换成字符串格式
soup.prettify()
5.BeautifulSoup查找文档元素
(1)find()
查找一个元素节点,返回第一个满足要求的节点信息
(2)find_all()
find_all(self, name=None, attrs={}, recursive=True, text=None, limit=None, **kwargs)
self表明它是一个类成员函数;name是要查找的标签元素名称;attrs表示元素的属性,一个字典;recursive是默认True,全范围查找该节点下面的子树;…
(3)返回的都是列表,每个元素都是一个bs4.element.Tag
对象
(4)获取包含的文本值:tag.text
6.BeautifulSoup遍历文档树
tag.parent:获取tag节点的父节点
tag.children:获取tag节点的所有子节点,包括element,text等类型的子节点
tag.desendants:获取tag节点的所有子孙节点,包括element,text等类型的子节点
tag.next_sibling:tag临近的下一个兄弟节点
tag.previous_sibling:tag临近的前一个兄弟节点
7.BeautifulSoup使用css语法查找元素
(1)tag.select(css)
:tag是HTML文档中的一个元素节点
css一般结构:[tagName][attName][=value]
全是可选的,表示元素名称,元素属性,元素属性的值
(2)属性的语法:
[attName]
选取带有指定属性的每个元素
[attName=value]
选取带有指定属性和值的每个元素
[aattName^=value]
:匹配属性值以value开头的每个元素
[attName$=value]
:匹配属性值以value结尾的每个元素
[attName*=value]
:匹配属性值包含value的每个元素
(3)遍历:
css有多个节点时,空格分开:
soup.select("div p")
:查找div节点下所有子孙p节点的信息
soup.select("div > p")
:查找div节点下所有直接子节点p的信息
soup.select("div ~ p")
:查找div后面所有同级别兄弟节点p的信息
soup.select("div + p")
:查找前一个节点后面所有同级别兄弟节点的信息
9.字符编码问题
import urllib.requestfrom bs4 import BeautifulSoup as bsfrom bs4 import UnicodeDammitdata = urllib.request.urlopen(url)data=data.read()dammit = UnicodeDammit(data,['gbk','utf-8'])data = dammit.unicode_markupsoup = bs(data,'lxml')tags = soup.select("div[class='属性值'] span.....")for tag in tags:print(tag)
8.实例:爬取中国天气网数据兰州7天的
import requests
from bs4 import BeautifulSoup
headers = {'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) \AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Mobile Safari/537.36'}
allUrl="http://www.weather.com.cn/weather/101160101.shtml"
response = requests.get(url=allUrl,headers = headers)
response.encoding="utf-8"
html = response.text
soup = BeautifulSoup(html, "html.parser")
lis = soup.select("ul[class='t clearfix'] li")
for li in lis:try:date = li.select('h1')[0].textweather = li.select('p[class="wea"]')[0].texttemp = li.select('p[class="tem"] span')[0].text + "/" + li.select('p[class="tem"] i')[0].textprint(date, weather, temp)except Exception as err:print(err)》》》》》》有个问题,超出索引 我没找到错 大佬找到了帮忙说一下
list index out of range
25日(明天) 阴转多云 15℃/6℃
26日(后天) 晴 19℃/8℃
27日(周二) 多云 18℃/6℃
28日(周三) 多云转晴 19℃/7℃
29日(周四) 晴 21℃/7℃
30日(周五) 晴转多云 30℃/12℃Process finished with exit code 0
BeautifulSoup详解相关推荐
- 爬虫之requests+BeautifulSoup详解
简介 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种 ...
- 爬虫笔记:BeautifulSoup详解
BeautifulSoup Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不 ...
- Scrapy之Selector详解
目录 一.简介 二.xpath 三.获取值 四.css选择 五.xpath扩展 一.简介 前面介绍了scrapy命令和Scrapy处理流程与重要组件 这里介绍一下Scrapy的Selector,Scr ...
- BeautifulSoup解析库详解
BeautifulSoup是灵活又方便的网页解析库,处理高效,支持多种解析器 利用它不用编写正则表达式即可方便地实现网页信息的提取 安装:pip3 install beautifulsoup4 用法详 ...
- python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...
Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到 ...
- [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解
欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...
- Python爬虫包 BeautifulSoup 递归抓取实例详解
Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另 ...
- 用python写一个简单的爬虫_Python实现简易Web爬虫详解
编辑推荐: 本文主要介绍了Python实现简易Web爬虫详解,希望对大家有帮助. 本文来自于脚本之家 ,由火龙果软件Alice编辑,推荐. 简介: 网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照 ...
- python爬取图片-Python爬取网页中的图片(搜狗图片)详解
前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...
最新文章
- 【ZooKeeper Notes 15】Watcher使用的注意事项
- 搞懂 Javascript 继承原理
- NIS、NFS 與 Autofs 整合應用
- 测试的目的_为什么需要测试?(软件测试的目的)
- Mac VirtualBox 命令行Centos 挂载Mac系统中的文件夹
- 抓取html的地址怎么写,html js 获取地址栏参数
- dubbo provider异步_dubbo九连问你知道多少?
- 电脑端的mafsvr服务关掉_网吧才是电脑优化的精髓!学会3招你也不用羡慕网吧的流畅了...
- 简单了解阿里云Web应用防火墙(下篇)
- 【小程序开发】微信小程序开发中遇到的那些坑...
- matlab相邻数据求差,matlab中求矩阵的本身相邻元素的波动标准差
- 开心问答—首个基于迅雷链智能合约上执行的问答游戏
- asterisk sip服务器搭建与配置
- WiFi大师专业版4.1.4独立源码
- wordpress备份和还原和迁移
- “AI芯片”通识_AI产品经理看这一篇就够了_团员分享_@书博
- 同步(Synchronous)和异步(Asynchronous)方法的区别
- 软件测试怎么学?如何系统学习软件测试?
- 智能制造数字化工厂的关键技术特点
- 编译ijkplayer遇到的问题“/libavutil/arm/asm.S:50:9: error: unknown directive”的解决