python网页数据抓取(【解析数据】使用浏览器上网,浏览器会把服务器返回来的HTML源代码 )
优采云 发布时间: 2022-01-11 22:03python网页数据抓取(【解析数据】使用浏览器上网,浏览器会把服务器返回来的HTML源代码
)
【分析数据】
使用浏览器上网,浏览器会将服务器返回的HTML源代码翻译成我们可以理解的东西
在爬虫中,还应该使用可以读取 html 的工具来提取所需的数据。
【抽取数据】是指从众多数据中选出我们需要的数据
右键-显示网页的源代码,在这个页面搜索会更准确
安装
pip install BeautifulSoup4 (Mac 需要输入 pip3 install BeautifulSoup4)
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++
分析数据
在括号中输入两个参数,
第0个参数必须是字符串类型;
第一个参数是解析器。这是一个 Python 内置库:html.parser
1 import requests
2
3 from bs4 import BeautifulSoup
4 #引入BS库
5
6 res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')
7
8 html = res.text
9
10 soup = BeautifulSoup(html,'html.parser') #把网页解析为BeautifulSoup对象
11
12 print(type(soup)) #查看soup的类型 soup的数据类型是 soup是一个BeautifulSoup对象。
13
14 print(soup)
15 # 打印soup
response.text 和汤打印出来的完全一样
它们属于不同的类:前者是字符串,后者是已经解析的 BeautifulSoup 对象
打印同理:BeautifulSoup对象在直接打印的时候会调用对象中的str方法,所以直接打印bs对象说明字符串是str的返回结果
++++++++++++++++++++++++++++++++++++++++++++++++++++++ +++++++++++++++++++++
提取数据
find() 和 find_all()
是 BeautifulSoup 对象的两个方法
可以匹配html的标签和属性使用方式相同
区别
find() 只提取第一个满足要求的数据
find_all() 提取所有符合要求的数据
1 import requests
2
3 from bs4 import BeautifulSoup
4
5 url = 'https://localprod.pandateacher.com/python-manuscript/crawler-html/spder-men0.0.html'
6
7 res = requests.get (url)
8
9 print(res.status_code)
10
11 soup = BeautifulSoup(res.text,'html.parser')
12
13 item = soup.find('div') #使用find()方法提取首个元素,并放到变量item里。
14
15 print(type(item)) #打印item的数据类型
16
17 print(item) #打印item
18
19
20 200
21
22 #是一个Tag类对象
23
24 大家好,我是一个块
25
26
27
28
29
30 items = soup.find_all('div') #用find_all()把所有符合要求的数据提取出来,并放在变量items里
31
32 print(type(items)) #打印items的数据类型
33
34 print(items) #打印items
35
36
37 200
38
39 #是一个ResultSet类的对象
40
41 [大家好,我是一个块, 我也是一个块, 我还是一个块]
42
43 #列表结构,其实是Tag对象以列表结构储存了起来,可以把它当做列表来处理
汤.find('div',class_='books')
Class_在python语法中区别于class类,避免程序冲突
也可以使用其他属性,比如样式属性等。
括号中的参数:标签和属性可以使用,也可以同时使用,这取决于我们要从网页中提取的内容
<p> 1 import requests # 调用requests库
2
3 from bs4 import BeautifulSoup # 调用BeautifulSoup库
4
5 res = requests.get('https://localprod.pandateacher.com/python-manuscript/crawler-html/spider-men5.0.html')# 返回一个Response对象,赋值给res
6
7 html= res.text# 把Response对象的内容以字符串的形式返回
8
9 soup = BeautifulSoup( html,'html.parser') # 把网页解析为BeautifulSoup对象
10
11 items = soup.find_all(class_='books') # 通过定位标签和属性提取我们想要的数据
12
13 print(type(items)) #打印items的数据类型 #it*敏*感*词*类型是