Python--开发简单爬虫

简单爬虫架构

Python--开发简单爬虫_第1张图片

动态运行流程

Python--开发简单爬虫_第2张图片

URL管理器的作用

Python--开发简单爬虫_第3张图片

URL管理器的3种实现方式

Python--开发简单爬虫_第4张图片

网页下载器的作用

Python--开发简单爬虫_第5张图片

Python网页下载器的种类

Python--开发简单爬虫_第6张图片

urllib2下载网页的3种方法

Python--开发简单爬虫_第7张图片

Python--开发简单爬虫_第8张图片

Python--开发简单爬虫_第9张图片

Python--开发简单爬虫_第10张图片

网页解析器的作用

Python--开发简单爬虫_第11张图片

Python的几种网页解析器

Python--开发简单爬虫_第12张图片

结构化解析依赖DOM树

Python--开发简单爬虫_第13张图片

Beautiful Soup语法

Python--开发简单爬虫_第14张图片

Python--开发简单爬虫_第15张图片

代码举例:

1.创建Beautiful Soup对象

1 from bs4 import BeautifulSoup
2 
3 soup = BeautifulSoup(
4     html_doc,               #HTML文档字符串
5     'heml.parser',          #HTML解析器
6     from_encoding='utf-8'   #HTML文档的编码
7 )

2.find_all find方法的使用

Python--开发简单爬虫_第16张图片

3.访问节点信息

Python--开发简单爬虫_第17张图片

4.Beautiful Soup处理html文档举例

 1 from bs4 import BeautifulSoup
 2 import re
 3 
 4 html_doc = """
 5 The Dormouse's story
 6 
 7 

The Dormouse's story

8 9

Once upon a time there were three little sisters; and their names were 10 Elsie, 11 Lacie and 12 Tillie; 13 and they lived at the bottom of a well.

14 15

...

16 """ 17 18 soup = BeautifulSoup( 19 html_doc, #HTML文档字符串 20 'html.parser', #HTML解析器 21 from_encoding='utf-8' #HTML文档的编码 22 ) 23 24 print('获取所有的连接') 25 links = soup.find_all('a') 26 for link in links: 27 print(link.name,link['href'],link.get_text()) 28 29 print('获取tillie的连接') 30 link_node = soup.find('a',href='http://example.com/tillie') 31 print(link_node.name,link_node['href'],link_node.get_text()) 32 33 print('正则表达式匹配') 34 link_node2 = soup.find('a',href=re.compile(r'lsi')) 35 print(link_node2.name,link_node2['href'],link_node2.get_text()) 36 37 print('获取P段落文字') 38 p_node = soup.find('p',class_='title') 39 print(p_node.name,p_node.get_text())

控制台输出:

 1 获取所有的连接
 2 a http://example.com/elsie Elsie
 3 a http://example.com/lacie Lacie
 4 a http://example.com/tillie Tillie
 5 获取tillie的连接
 6 a http://example.com/tillie Tillie
 7 正则表达式匹配
 8 a http://example.com/elsie Elsie
 9 获取P段落文字
10 p The Dormouse's story

更高级的爬虫还会涉及到“需登陆、验证码、Ajax、服务器防爬虫、多线程、分布式”等情况

Python--开发简单爬虫_第18张图片

 

你可能感兴趣的:(Python--开发简单爬虫)