数据解析的三种方式
数据解析的三种方式
数据解析的原理
- 解析的局部的文本内容都会在标签之间或者标签对应的属性中进行存储
- 1.进行指定标签的定位
- 2.标签或者标签对应的数据中存储的数据值进行提取
1.正则
- url
- 请求方式
- 反反爬策略
- 编写响应的正则
- 进行访问
2.bs4
解析原理:
- 实例化一个BeautifulSoup对象,将该页面源码数据加载到该对象中
- 通过调用BeautifulSoup对象中的属性或者方法进行标签定位和数据提取
两种加载形式:
-
1.将本地的html文档中的数据加载到该对象中
with open('路径',mode="r",encoding="utf-8") as fj: soup = BeautifulSoup(fp,'lxml') fp = open('路径',mode="r",encoding="utf-8") soup = BeautifulSoup(fp,'lxml')
-
2.将互联网山获取的页面源码加载到该对象中
page_text = response.text soup = BeautifulSoup(page_text,'lxml')
用户数据解析的方法和属性,示例如下
with open("fuda.html", mode='r', encoding="utf-8") as fj:
soup = BeautifulSoup(fj, "lxml")
# 1.soup.标签 = soup.find("标签") # -> 找到第一个该标签
# print(soup.li)
# print(soup.find("li"))
# 2.soup.find("标签名",class_="类名") # -> 找某个具有class为xx的标签
# print(soup.find("div", class_="list"))
# 3.soup.find_all("标签名") # -> 列表 找返回页面中所有的xx标签
# print(soup.find_all("li"))
# 4.select
# print(soup.select(".down")) # -> 列表 找返回页面中所有的类,标签,属性选择器
# print(soup.select(".down > a")) # -> 后面必须跟着a标签,否则拿不到【不可以跨级】
# print(soup.select(".down a")) # -> 所有list下面的a标签都会拿到【可以跨级】
# print(soup.select(".list > a")[0]) # -> 所有list下面的a标签只会拿到第一个
# 5.获取文本内容【text get_text string】
"""
text/ get_text 能够获取一个标签中直系或者非直系的文本内容
string 只能够获取标签中直系文本内容
"""
# print(soup.select(".down")[0].text)
# print(soup.select(".down")[0].get_text())
# 6.属性 获取到标签后 [属性名]
# print(soup.select(".down a")[0]['href'])