文章目录

  • 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详解相关推荐

  1. 爬虫之requests+BeautifulSoup详解

    简介 Python标准库中提供了:urllib.urllib2.httplib等模块以供Http请求,但是,它的 API 太渣了.它是为另一个时代.另一个互联网所创建的.它需要巨量的工作,甚至包括各种 ...

  2. 爬虫笔记:BeautifulSoup详解

    BeautifulSoup Beautiful Soup提供一些简单的.python式的函数用来处理导航.搜索.修改分析树等功能.它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不 ...

  3. Scrapy之Selector详解

    目录 一.简介 二.xpath 三.获取值 四.css选择 五.xpath扩展 一.简介 前面介绍了scrapy命令和Scrapy处理流程与重要组件 这里介绍一下Scrapy的Selector,Scr ...

  4. BeautifulSoup解析库详解

    BeautifulSoup是灵活又方便的网页解析库,处理高效,支持多种解析器 利用它不用编写正则表达式即可方便地实现网页信息的提取 安装:pip3 install beautifulsoup4 用法详 ...

  5. python爬虫beautifulsoup爬当当网_Python爬虫包 BeautifulSoup 递归抓取实例详解_python_脚本之家...

    Python爬虫包 BeautifulSoup  递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到 ...

  6. [Python从零到壹] 五.网络爬虫之BeautifulSoup基础语法万字详解

    欢迎大家来到"Python从零到壹",在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界.所有文章都将结合案例.代码和作者的经验讲 ...

  7. Python爬虫包 BeautifulSoup 递归抓取实例详解

    Python爬虫包 BeautifulSoup 递归抓取实例详解 概要: 爬虫的主要目的就是为了沿着网络抓取需要的内容.它们的本质是一种递归的过程.它们首先需要获得网页的内容,然后分析页面内容并找到另 ...

  8. 用python写一个简单的爬虫_Python实现简易Web爬虫详解

    编辑推荐: 本文主要介绍了Python实现简易Web爬虫详解,希望对大家有帮助. 本文来自于脚本之家 ,由火龙果软件Alice编辑,推荐. 简介: 网络爬虫(又被称为网页蜘蛛),网络机器人,是一种按照 ...

  9. python爬取图片-Python爬取网页中的图片(搜狗图片)详解

    前言 最近几天,研究了一下一直很好奇的爬虫算法.这里写一下最近几天的点点心得.下面进入正文: 你可能需要的工作环境: Python 3.6官网下载 本地下载 我们这里以sogou作为爬取的对象. 首先 ...

最新文章

  1. 【ZooKeeper Notes 15】Watcher使用的注意事项
  2. 搞懂 Javascript 继承原理
  3. NIS、NFS 與 Autofs 整合應用
  4. 测试的目的_为什么需要测试?(软件测试的目的)
  5. Mac VirtualBox 命令行Centos 挂载Mac系统中的文件夹
  6. 抓取html的地址怎么写,html js 获取地址栏参数
  7. dubbo provider异步_dubbo九连问你知道多少?
  8. 电脑端的mafsvr服务关掉_网吧才是电脑优化的精髓!学会3招你也不用羡慕网吧的流畅了...
  9. 简单了解阿里云Web应用防火墙(下篇)
  10. 【小程序开发】微信小程序开发中遇到的那些坑...
  11. matlab相邻数据求差,matlab中求矩阵的本身相邻元素的波动标准差
  12. 开心问答—首个基于迅雷链智能合约上执行的问答游戏
  13. asterisk sip服务器搭建与配置
  14. WiFi大师专业版4.1.4独立源码
  15. wordpress备份和还原和迁移
  16. “AI芯片”通识_AI产品经理看这一篇就够了_团员分享_@书博
  17. 同步(Synchronous)和异步(Asynchronous)方法的区别
  18. 软件测试怎么学?如何系统学习软件测试?
  19. 智能制造数字化工厂的关键技术特点
  20. 编译ijkplayer遇到的问题“/libavutil/arm/asm.S:50:9: error: unknown directive”的解决

热门文章

  1. Stp-(生成树协议)是用来避免链路环路产生的广播风暴
  2. 石子合并——最经典的dp问题
  3. 国内即时通讯工具介绍
  4. poe交换机供电方法
  5. 海康NCG联网网关设备通过国标接入到EasyCVR视频图像智能分析平台注册失败问题排查
  6. 转Draren总结的ollydbg v1.09d 中文版使用说明
  7. Linux内防火墙永久开启或者关闭操作命令
  8. 加油,打工人~杨斯维特珍视您的每一滴汗水!
  9. 计算机CQ,[计算机软件及应用]CQ使用简介.ppt
  10. 了解RESTful接口设计风格