一、爬虫的简介
爬虫:一段自动抓取互联网信息的程序。
价值:互联网数据,为我所用。
二、简单的爬虫架构
爬虫调度端——> URL管理器——>网页下载器——>网页分析器——>价值数据
三、URL管理器
管理待抓取的URL集合和已经抓取URL集合。防止重复抓取、循环抓取。
实现方式:1、内存中(set())2、关系数据库(MySQL)3、缓存数据库(redis)
四、网页下载器(urllib2)
将互联网上的URL对应的网页下载到本地的工具
网页下载器的类型:
python官方基础模块:urllib2
1、使用方法:
import urllib2
#直接请求
response = urllib2.urlopen('http://www.baidu.com')
#获取状态码,如果是200表示成功
print response.getcode()
#读取内容
cont = response.read()
第三方包更强大:requests
五、网页解析器(BeautifulSoup)
正则表达式 html.parser <----- BeautifulSoup -------> lxml
Beautiful Soup :python第三方库,用于从HTML或者xml中提取数据。
安装并测试:
安装:pip install beautifulsoup4
测试:import bs4
BeautifulSoup的语法:
1、创建BeautifulSoup对象
from bs4 import BeautifulSoup
#根据html网页字符串创建对象
soup = BeautifulSoup(
html_doc,'html.parser',from_encoding = 'utf8'
)
#三个参数分别是:文档字符串 解析器 文档编码
2、搜索节点(find_all,find)
···
方法:find_all(name,attrs)
查找所有为a的节点
soup.find_all('a')
查找所有为a,链接符合/view/123.html形式的节点
soup.find_all('a',href = '/view/123.html')
或者利用正则
soup.find_all('a',href = re.compile(r'/view/\d+.html'))
查找所有标签为div,class 为 abc ,文字为python的节点
soup.find_all('div',class_ = 'abc',string = 'python')
···
3、访问节点信息
#得到节点:<a href = '1.html'>Python</a>
#获取查找到的节点的标签名称
node.name
#获取节点的href属性
node['href']
#获取查找到的节点a的链接文字
node.get_text()
六、完整实例:爬取百度百科Python词条相关额1000个页面数据
网友评论