bs4是如何解析的
- bs4数据解析
- 解析原理:
-实例化一个BeautifulSoup对象,将需要解析的页面源码加在到该对象中
-调用BeautifulSoup对象中的方法和属性实现对标签定位和文本数据的提取
bs4 操作
#安装
#- pip install bs4
#- pip install lxml
#实例化方式
#- BeautifulSoup(page_text,'lxml'):将互联网请求的数据加在到该对象
#bs4相关解析操作
#标签定位
# soup.tagName:定位到第一个出现的TagName标签
# 属性定位:soup.find('tagName',attrNmae='value')
# find_all('tagName',attrName='value'):返回一个列表
# 选择器定位:select('tagName'):返回列表
#层级选择器
#大于号(>):表示一个层级
#空格:表示多个层级
#提取文本
#string:将当前标签文本提取出来
#text:子类全部文本提取出来
#提取属性
tagName['attr']
bs4实战:爬取热门城市名称(find)
import requests
from bs4 import BeautifulSoup
url = 'https://www.aqistudy.cn/historydata/'
#请求头 UA检测一定要加
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}
#发送请求,并携带请求头
response = requests.get(url=url,headers=headers)
#将响应页面数据传入到bs4实例中,在调用相关属性方法进行数据提取
soup = BeautifulSoup(response.text,'lxml')
#定位到ul标签属性名是class属性值是'unstyled'
ulValue = soup.find('ul',class_='unstyled')
#在通过.text提取所有ul标签下的文本数据
ulValue.text
bs4实战2:爬取全部城市名称(find_all / select)
#先导入相关包
import requests
from bs4 import BeautifulSoup
#指定url
url = 'https://www.aqistudy.cn/historydata/'
#设置UA
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.114 Safari/537.36'
}
#请求数据,并携带请求头
response = requests.get(url=url,headers=headers)
#将响应页面数据传入到bs4实例中,在调用相关属性方法进行数据提取
soup = BeautifulSoup(response.text,'lxml')
#先用find定位到包裹全部城市的大标签,直接定位全部城市热门城市也会定位到
Name = soup.find('div',class_='all')
#在其定位全部城市
NameList = Name.find_all('ul',class_='unstyled')
#方式二:select选择器实现
#NameList = soup.select("div[class='all'] li>a")
#循环列表中的每个值,进行文本提取
for value in NameList:
#提取ul标签下所有的文本
print(value.text)