爬虫初探01-慕课网《Python开发简单爬虫》总结
爬虫学习总结
1.说明
- 原课程基于python 2.7版本讲解,本总结基于python 3.5版本
- 原课程和以下部分引用来自慕课网 乒乓球鸡蛋老师的 ** 《Python开发简单爬虫》**
2.回顾总结
2.1 爬虫简介及其价值
- 爬虫: 一段自动抓取互联网信息的程序
- 价值: 互联网数据,为我所用!
2.2 简单爬虫架构和运行流程
2.3 URL管理器和实现方法
- URL管理器:管理待抓取URL集合和已抓取URL集合
- 防止重复抓取和循环抓取
- 添加新URL到待爬取集合
- 判断待添加URL是否在容器
- 判断是否还有待爬取URL
- 获取待爬取URL
- 实现方式
- 内存
- python内存set()
- 关系数据库
- MySQL urls(url, is_crawled)
- 缓存数据库
- redis
- 内存
2.4 网页下载器
- 网页下载器:将互联网上URL对应的网页下载到本地的工具
- 直接下载
1
2
3
4
5
6
7import urllib.request
# 直接请求
response = urllib.request.urlopen('http://python.org/')
# 获取状态码,如果是200表示获取成功
print response.getcode()
#读取内容
html = response.read() - 发送数据和header
1
2
3
4
5
6
7
8
9
10
11
12
13
14import urllib.parse
import urllib.request
url = 'http://localhost/login.php'
user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
values = {
'act' : 'login',
}
headers = { 'User-Agent' : user_agent }
data = urllib.parse.urlencode(values)
req = urllib.request.Request(url, data, headers)
response = urllib.request.urlopen(req)
the_page = response.read()
print(the_page.decode("utf8")) - 添加特殊情景处理器
- HTTPCookieProcessor
- ProxyHandler
- HTTPSHandler
- HTTPRedirectHandler
2.5 网页解析器
- 网页解析器:从网页中提取有价值数据的工具
- 提取有价值数据
- 新的待爬取URL
- 类型
- 正则表达式
- 字符串方式模糊匹配
- html.parser
- 结构化解析
- BeautifulSoup
- 结构化解析
- lxml
- 结构化解析
- 正则表达式
3. 实战爬取百科数据
建立python 项目和baike_spider包,baike_spider包内有spider_main、url_manager、html_downloader、html_parser、html_outputer五个模块
3.1 调度程序 spider_main.py
1 | from baike_spider import url_manager, html_downloader, html_parser, html_outputer |
3.2 URL管理器 url_manager.py
1 |
|
3.3 HTML下载器 html_downloader.py
1 |
|
3.4 HTML解析器 html_parser.py
1 |
|
3.5 HTML输出器 html_outputer.python
1 | import os |
3.6 运行结果