爬虫:自动访问互联网并提取数据的程序
爬虫调度端:启动爬虫、停止爬虫、监视爬虫的运行情况
1.Url管理器:管理将要爬取的url和已经爬取的url。将待爬取的url传送给网页下载器。(防止重复抓取,循环抓取)(实现方式:内存;关系数据库;缓存数据库)
2.网页下载器:将Url指定的网页下载下来,保存为一个字符串。将这个字符串传送给网页解析器进行解析。(python网页下载器:urllib)
urllib方法1
import urllib.request
#直接请求
response=urllib.request.urlopen('http://www.baidu.com/')
#获取状态码,如果是200则表示成功
print(response.getcode())
#读取内容
cont=response.read()
urllib方法2
import urllib.request
#创建request对象
request=urllib.request.Request('http://www.baidu.com/')
#添加数据
request.add_header('User-Agent','Mozilla/5.0')
#发送请求获取结果
response=urllib.request.urlopen(request)
3.网页解析器:一方面,会解释出有价值的数据;另一方面,解析出字符串中的url,将其补充到url管理器。
网页解析器有好几种。
- 正则表达式 :模糊匹配,不适合复杂的文档
- html.parser :python自带的解析器
- Beautiful Soup :第三方插件,用于HTML,XML
- lxml :第三方插件
三个模块,形成了一个循环。只有有未爬取的url,这个循环就会一直继续下去。