美文网首页
Python-简单的网络爬虫

Python-简单的网络爬虫

作者: zzj丶 | 来源:发表于2017-10-10 10:11 被阅读18次

一、爬虫的简介
爬虫:一段自动抓取互联网信息的程序。
价值:互联网数据,为我所用。

二、简单的爬虫架构
爬虫调度端——> 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

D`V0~4R%3KNUAOXTV~1PZSD.png

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个页面数据

相关文章

网友评论

      本文标题:Python-简单的网络爬虫

      本文链接:https://www.haomeiwen.com/subject/svnryxtx.html