1.爬虫模块
Url管理器
网页下载器(urlib2)
网页解析器(BeautifulSoup)
2.简单爬虫架构
3.爬虫架构运行流程
4.url管理器
4.1作用
用来管理待抓取URL集合和已抓取URL集合--防止重复抓取、防止循环抓取
URL管理器需要支持:1.添加一个新的URL添加到待爬取得集合中同时判断集合中是否有这个URL如果有这个URL则不能添加。
2.获取待爬取的URL同时判断容器中是否有待爬取的URL如果有的话将URL从待爬取的URL移动到已经爬取的URL集合中。
4.2实现方式
1.将待爬取的URL集合已爬取的集合存储到内存中用set集合(也因为set集合可以去除重复集合)
2.关系数据库(urls(url,is_crawled))用字段is_crawled来标识是否是已经爬取的url
3.缓存数据库中(redis)待爬取URL集合:set 已爬取URL集合:set
5.网页下载器
5.1说明
将互联网上URL对应的网页下载到本地的工具
5.2 Python的几种网页下载器
urllib2:Python官方基础模块
requests:第三方包更强大
5.3 demo
import urllib.request
import http.cookiejar
url="http://www.baidu.com";
print("第一种方法");
respose1=urllib.request.urlopen(url);
print(respose1.getcode());
print(respose1.read());
print(len(respose1.read()));
print("第二种方法 使用 Request 传参数")
request=urllib.request.Request(url);
request.add_header("user-agent","Mozilla/5.0");
request1=urllib.request.urlopen(request);
print(request1.getcode());
print(request1.read());
print(len(request1.read()));
print("第三种方法 增加cookie处理")
mcj = http.cookiejar.MozillaCookieJar();
cookiehand = urllib.request.HTTPCookieProcessor(mcj);
opener = urllib.request.build_opener(cookiehand);
opener.addheaders = [('User-agent', 'Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36')];
u=opener.open(url);
print(u.getcode());
print(mcj);
print(u.read());