目录
1.目标
2.码前须知
3.操作流程
4.完整代码
5.总结
1.目标
python爬取三国演义,生成词云、图表
2.码前须知
项目目标:三国人物名称及出现次数-----数据统计分析
提出问题:哪个人物在三国演义中出现的次数最多?,我们希望通过数据分析来获得答案。
分析工具:pandas,Matplotlib
pip install bs4
pip install lxml
pip install pandas
pip install Matplotlib
bs4数据解析必备知识点:标签定位,提取标签中的数据值
1.实例化一个BeautifulSoup对象,并将页面源码数据加载到该对象中,lxml是解析器,固定的参数,下面是举例
#本地html加载到该对象:
fp = open(’./test.html’,‘r’,encoding=‘utf-8’)
soup = BeautifulSoup(fp,‘lxml’)
print(soup)
#互联网上获取的源码数据(常用)
page_text = response.text
soup = BeautifulSoup(page_text,‘lxml’)
2.通过调用BeautifulSoup对象中相关的属性或者方法对标签进行定位和提取
bs4具体属性的用法
1.标签 ,如< p > < a >< div >等等
soup.tagName
例如
soup.a #返回的是html第一次出现的tagName的a标签
soup.div #返回的是html第一次出现的tagName的div标签
2.查找
soup.find(‘div’) 用法相当于soup.div
属性定位, < div class=‘song’ >
soup.find(‘div’,class_=‘song’) class_需要带下划线
class_/id/attr
3.所有符合条件的标签
soup.find_all(‘a’) #返回符合所有的a标签,也可以属性定位
4.select放置选择器 类选择器. .代表的就是tang
soup.select(’.tang’)
soup.select(‘某种选择器(id,class,标签,选择器)’)
返回的是一个列表
定位到标签下面的标签 >表示标签一个层级选择器
soup.select(’.tang > ul >li >a’[0])
空格表示多级选择器
soup.select(‘tang’ > ul a’[0]) 与上述的表达式相同
常用层级选择器
5.获取标签中间的文本数据
soup.a.text/string/get_text()
区别
text/get_text():可以获取某一个标签中所有的文本内容,即使不是直系的文本
string:只可以获取直系文本
6.获取标签中的属性值
soup.a[‘href’] 相当于列表操作
3.操作流程
1.爬取数据来源: 古诗词网《三国演义》
2.编码流程:
指定URL–http://www.shicimingju.com/book/sanguoyanyi.html
发起请求–requests
获取响应数据—