简单的爬虫架构
爬虫调度端-url管理器-网页下载器-网页解析器-价值数据
url管理器需要实现的需求
1.添加新的URL到待爬取的集合中(判断待添加URL是否在容器中)
2.获取待爬取url(判断是否存在待爬取url,将待爬取url添加到已爬取url中)
url管理器实现方式
python内存 :待爬取url集合:set()
已爬取url集合:set()
关系数据库:mysql urls(url,is_crawled)
网页下载器实现功能
通过url将网页html下载到本地(本地文件或内存字符串)
网页下载器种类
一.urllib2
二.requests
urllib2下载网页方法1:
##方式一:
import urllib
#直接请求
response = urllib.urlopen('http://www.baidu.com')
#获取状态码
print (response.getcode())
#读取内容
con=response.read()
##方式二:
import urllib
##创建Request对象
request=urllib.Request(url)
##添加数据
request.add_data('a','1')
##添加http的header
request.add_header('User-Agent','Mozilla/5.0')
##发送请求获取结果
response= urllib.urlopen(request)
##方式三:
import urllib, cookielib
##创建cookie容器
cj=cookielib.CookieJar()
##创建1个opener
opener=urllib.build_opener(urllib.HttpCookieProcessor(cj))
##给urllib2安装opener
urllib.install_opener(opener)
## 使用带有cookie的urllib2访问网页
response = urllib2.urlopen("http://www.baidu.com")
网页解析器:从网络提取有价值的工具
python自带:1.正则表达式 2.html.parser
第三方网页解析器:1.Beautiful Soup 2.Ixml
安装BeautifulSoup教程:
1.打开cmd
2.##进入Python下Scripts文件夹
cd C:\Users\TOP\AppData\Local\Programs\Python\Python37\scripts
3.##安装
pip install beautifulsoup4
Beautiful Soup语法
1.创建BeautifulSoup对象
from bs4 import BeautifulSoup
##根据HTML网页字符串创建BeautifulSoup对象
soup=BeautifulSoup(
html_doc ##html文档字符串
'html.parser' ##html解析器
from_encoding='utf8'
)
## 方法find_all,find(name:节点名称 ,attrs:节点属性,find:节点文字)
find_all(name,attrs,string)
2.访问节点信息
## 获取查到节点的标签名称
node.name
## 获取查到的节点的href属性
node['href']
## 获取查找到的a节点的链接文字
node.get_text()