版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
——个人笔记
- 一系列:
python爬虫(一)
python爬虫(三)
python爬虫(四)
python爬虫(五)
python爬虫(六)
python爬虫(七)
python爬虫(八)
python爬虫(九)
python爬虫(十)
python爬虫(十一)
-
解析数据(第1步)
-
使用BeautifulSoup解析和提取网页中的数据,BeautifulSoup不是Python标准库,需要单独安装它。
-
解析用法:BeautifulSoup(要解析的文本,‘解析器’)会返回一个<class ‘bs4.BeautifulSoup’> 对象。
import requests from bs4 import BeautifulSoup #引入 res = requests.get(' URL') #第二个是html解析器,soup就是bs4.BeautifulSoup对象 soup = BeautifulSoup( res.text,'html.parser')
-
-
提取数据(第2步)
- 得到了soup(bs4.BeautifulSoup对象)后,我们可以用find()与find_all()来提取数据中的内容。
- 解析用法:以find()为例子,find(标签,属性),这样可以根据标签和属性来找到匹配的,两个参数至少要有一个(不止标签和属性两种,通常用这两个就足够了)。两个函数的区别就是,前者只会返回第一个符合要求的,后者会返回所有符合的。
import requests from bs4 import BeautifulSoup url = 'URL' res = requests.get (url) soup = BeautifulSoup(res.text,'html.parser') item = soup.find('div') #查找获取的html中<div>标签和其的内容
- 上面这样其实还没完成O(∩_∩)O,因为item还包含了标签属性这些。那么我们要用Tag的函数,因为item会是Tag对象。同样Tag对象也有find()和find_all(),用法和上面一样。不同的是还有text属性,它就是Tag对象中的内容。
- 整个过程的完整代码:
import requests # 调用requests库 from bs4 import BeautifulSoup # 调用BeautifulSoup库 res =requests.get('URL') # 返回一个response对象,赋值给res,URL为地址,这里以推荐书籍网站为例 html=res.text # 把res解析为字符串 soup = BeautifulSoup( html,'html.parser') # 把网页解析为BeautifulSoup对象 items = soup.find_all(class_='books') # 通过匹配属性class='books'提取出我们想要的元素 for item in items: # 遍历列表items kind = item.find('h2') # 在列表中的每个元素里,匹配标签<h2>提取出数据 title = item.find(class_='title') # 在列表中的每个元素里,匹配属性class_='title'提取出数据 brief = item.find(class_='info') # 在列表中的每个元素里,匹配属性class_='info'提取出数据 print(kind.text,'\n',title.text,'\n',title['href'],'\n',brief.text) # 打印书籍的类型、名字、链接和简介的文字
-
过程图示