Python 高并发线程爬取诗词之诗词分析
本节所讲内容:
1、5分钟快速了解爬虫概念
2、beautifulsoup 匹配原则
3、wordcloud 使用详情
实战:爬取中国唐诗宋词,体验文人雅士最常用的词语!
1、5分钟快速了解爬虫
爬虫(spider:网络蜘蛛):是一个用脚本代替浏览器请求服务器获取服务器资源的程序。
数据收集(数据分析、人工智能)
模拟操作(测试、数据采集)
接口操作(自动化)
爬虫的原理:
说到底,我们的爬虫是模拟web请求,不论学习什么框架我们都需要对http协议的请求和响应有所了解:
简单的了解一下这幅图。
2、beautifulsoup 匹配原则
如果一个正则匹配稍有差池,那可能程序就处在永久的循环之中,而且有的小伙伴们也对写正则表达式的写法用得不熟练,没关系,我们还有一个更强大的工具,叫Beautiful Soup,有了它我们可以很方便地提取出HTML或XML标签中的内容,实在是方便,这一节就让我们一起来感受一下Beautiful Soup的强大吧。
什么是Beautiful Soup
简单来说,Beautiful Soup是python的一个库,最主要的功能是从网页抓取数据。
官方解释如下:
Beautiful Soup提供一些简单的、python式的函数用来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。
2.1 bs的安装
环境介绍: pycharm 2017.2.3 + python 3.5.0
Pip install bs4
首先必须要导入 bs4 库, 创建BeautifulSoup对象
from bs4 import BeautifulSoup as BS
text = '''
<html>
<head>
<meta = charset='UTF-8' >
<title id =1 href = 'http://example.com/elsie' class = 'title'>Test</title>
</head>
<body>
<div class = 'ok'>
<div class = 'nice'>
<p class = 'p'>
Hello World
</p>
<p class = 'e'>
风一般的男人
</p>
</div>
</div>
</body>
</html>
'''
soup = BS(text,"lxml")#前面是要解析的内容,后面是指定的解析器
print(soup.prettify())#转换字符串
print(type(soup.prettify()))
print(type(soup))
2.2.2 搜索文档树
find()和find_all()
find_all()方法搜索当前tag的所有tag子节点,并判断是否符合过滤器的条件。
find()和find_all()的区别就是,find直接返回元素的一个结果,find_all返回元素列表
find_all( name , attrs , recursive , text , **kwargs )简介一下参数
name 参数可以查找所有名字为name的tag,字符串对象会被自动忽略掉;name参数可以传入字符串、正则表达式、列表、True、自定义的方法等但是各自代表的含义不一样。