南京网站优化方案,庆阳网站设计师招聘,黄页88会员一年多少钱,审计局网站建设管理目录
一、爬虫概述
1、准备工作
2、爬虫类型
3、爬虫原理
二、爬虫三大库
1、Requests库
2、BeautifulSoup库
3、Lxml库 一、爬虫概述
爬虫又称网络机器人#xff0c;可以代替人工从互联网中采集、整理数据。常见的网络爬虫主要有百度公司的Baiduspider、360公司的36…目录
一、爬虫概述
1、准备工作
2、爬虫类型
3、爬虫原理
二、爬虫三大库
1、Requests库
2、BeautifulSoup库
3、Lxml库 一、爬虫概述
爬虫又称网络机器人可以代替人工从互联网中采集、整理数据。常见的网络爬虫主要有百度公司的Baiduspider、360公司的360Spider、搜狗公司的Sogouspider、微软的Bingbot等。
1、准备工作
爬取一个站点之前需要大致了解站点规模和结构。站点自身的robots.txt和sitemap文件都能为我们提供帮助。①robots文件一般大部分站点会自定义自己的robots文件以便引导爬虫按照自己的意图爬取相关数据。robots文件能使我们了解该站点的限制条件提升爬取成功率也可了解到站点结构使我们有针对性地设计程序。②sitemap文件呈现了整个站点的组成结构可根据需求定位需要的内容但是该文件可能存在更新不及时或不完整的情况。③估算站点规模目标站点的大小会影响爬取的效率通常可通过百度搜索引擎百度搜索引擎site关键字过滤域名结果获取相关 统计信息如在www.baidu.com搜索框输入“site:目标站点域名”
2、爬虫类型
按照实现的技术和结构可分为通用网络爬虫、聚焦网络爬虫、增量式网络爬虫、深层网络爬虫。实际的网络爬虫系统是由它们组成的。①通用网络爬虫又称全网爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块构成。其获取的目标资源在整个互联网中目标数据量庞大爬行范围广泛对性能的要求较高主要用在大型搜索引擎如百度搜索应用价值较高。②聚焦网络爬虫又称主题网络爬虫主要由初始URL集合、URL队列、页面爬行模块、页面分析模块、页面数据库、链接过滤模块、内容评价模块、链接评价模块构成。按照预先设定的主题在一定范围内爬取对于网络的带宽资源及服务器资源要求较低主要用于特定信息的获取。③增量式网络爬虫主要由本地页面URL集合、待爬行URL集合、本地页面集、爬行模块、排序模块、更新模块构成。对已下载网页采取增量式更新和只爬行新产生的或者已经发生变化网页的爬虫。与周期性爬行和刷新页面的爬虫相比增量式网路爬虫只会在需要的时候爬取新产生或发生更新的页面并不重新下载没有发生变化的页面可有效减少数据下载量减少时间和空间上的浪费但增加了算法难度。④深层网络爬虫主要由URL列表、LVS列表、爬行控制器、解析器、LVS控制器、表单分析器、表单处理器、响应分析器构成其中LVS是指标签/数据集合用来表示填充表单的数据源。用于爬取互联网深层页面的爬虫程序与通用爬虫相比深层页面的爬取需要想办法自动填充对应的表单因而深层网络爬虫的核心在于表单的填写。
3、爬虫原理
不同爬虫程序的原理不尽相同但是都有“共性”下面用一个通用爬虫网络的结构来说明爬虫的基本工作流程。
①按照预定主题选取一部分精心挑选的种子URL
②将种子URL放入待抓取的URL队列中
③从待抓取URL队列中依次读取种子URL解析其对应的DNS并得到对应的主机IP将URL对应的网页下载下来并存入已下载网页数据库中随后将已访问的种子URL出队放入已抓取URL队列中。
④分析已抓取队列中的URL从已下载网页数据中分析出其他的URL并和已抓取的URL进行重复性比较。最后将去重过的URL放入待抓取的URL队列中重复③④操作直到待抓取URL队列为空。
二、爬虫三大库
Python爬虫有三个比较实用的库Requests、BeautifulSoup和Lxml为我们编写爬虫程序提供很大支持。
1、Requests库
安装
pip install requests
Requests库主要有7种主要方法①requests.get‘域名’方法主要用于获取HTML网页相当于HTTP的GET。返回对象response的常用属性如下
r.status_codeHTTP请求的返回状态200表示链接成功404表示失败。
r.textHTTP响应内容的字符串形式即url对应的页面内容。
r.encoding从HTTP header中猜测的响应内容编码方式。
r.apparent_encoding从内容中分析出的响应内容的编码方式。
r.contentHTTP响应内容的二进制形式。
②requests.head(‘域名’)方法主要用于获取HTML网页头部信息相当于HTTP的HEAD。返回对象也是response③requests.post(‘域名’dataxxx)方法主要用于向HTTP网页提交POST请求相当于HTTP的POSTxxx可以使字典名或字符串。返回对象也是response④requests.put(‘域名’dataxxx)方法主要用于向HTTP网页提交put请求相当于HTTP的PUTxxx可以使字典名或字符串。⑤requests.patch(‘域名’dataxxx)方法主要用于向HTTP网页提交局部修改请求相当于HTTP的PATCH。⑥requests.delete(域名方法主要用于向HTTP页面提交删除请求相当于HTTP的DELETE。⑦requests.requests(method,url,**kwargs)方法主要用来构造一个请求支撑①~⑥各个基础方法。 其中method是指请求方式对应get()、put()等方法例如’GET‘、’PUT‘url为目标页面的url链接地址**kwargs代表控制访问参数共13个。
爬取定向网页的通用代码框架 下面的示例有利于使大家按照统一的编程风格编写程序提高通用代码的可读性
import requests
def getHTMLText(url):try:r requests.get(url,timeout 30)r.raise_for_status() #如果状态码不是200引发HTTPError异常r.encoding r.apparent_encodingreturn r.textexcept:return 产生异常
if __name__ __main__: #限定getHTMLText()只在所定义的文件中执行url https://www.baidu.com/print(getHTMLText(url)) 2、BeautifulSoup库
BeautifulSoup是一个用Python编写的HTML/XML的解释器可处理不规范标记并生成剖析树并提供导航、搜索、修改剖析树的操作。下面主要介绍如何使用该库处理不规范标记按照指定格式输出对应文档。安装
pip install beautifulsoup4
基本操作 ①创建BeautifulSoup对象 通过soup对象格式化函数prettify可格式化输出soup对象中的内容该函数是分析HTML文档的第一步。 ②BeautifulSoup库的对象 BeautifulSoup库用于将一个复杂HTML文档转化为一个复杂的树形结构每个节点都是一个Python对象据功能该库的对象分为4类 Tag对象得到标签内容 NavigableString对象获取标签内部的文字用.string BeautifulSoup对象可当作特殊的Tag对象表示一个文档全部内容 Comment对象可当作特殊的NavigableString对象输出实际内容仍不包括注释符号 ③遍历文档 搜索文档树的find_all方法fand_all(name,attrs,recursive,text,**kwargs)
3、Lxml库
Lxml库是另一种高效的网页解析库速度比BeautifulSoup快。安装
pip install lxml
基本操作
略用到了再具体来补充学习