抓取网页新闻(Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结)
优采云 发布时间: 2022-02-03 05:18抓取网页新闻(Python网络爬虫四大选择器(正则表达式、BS4、Xpath、CSS)总结)
Python网络爬虫四大选择器总结(正则表达式、BS4、Xpath、CSS)
0.前言
相关实战文章:正则表达式、BeautifulSoup、Xpath、CSS选择器分别抓取京东的产品信息。
网络爬虫:模拟客户端批量发送网络请求,批量接收请求对应的数据,并按照一定的规则自动抓取互联网信息,执行数据采集,并持久化存储的程序。其他用途:百度搜索、12306抢票、各种抢购、投票、刷票、短信轰炸、网络攻击、Web漏洞扫描等都是爬虫技术。
爬行动物的目的
1.财经财经新闻/数据,制定投资策略,进行量化交易
2.各类旅游资讯优化旅游策略
3.电商商品信息比价系统
4.游戏游戏论坛调整游戏运营
5.银行个人交易信息信用体系/贷款评级
6.职位信息职位信息
7.舆论 各大论坛社会群体感知、舆论导向
只要是客户端(浏览器)能做到的,原则上爬虫都能做到。这意味着只要人类可以访问的网页和他们可以看到的数据,爬虫肯定可以爬取铜等资源。
抓取用户看不到的数据被称为黑客攻击,这是非法的。
爬虫的作用:可以爬取数据进行数据分析,大的可以定制一个搜索引擎。更好的搜索引擎优化。
通用爬虫:搜索引擎的爬虫系统,搜索引擎和网络服务提供商提供的爬虫。目的是尽可能的;将互联网上的所有网页下载下来,放到本地服务器上形成备份,对这些网页进行相关处理(提取关键词、去除广告),最后提供用户检索接口。
过程:
首先选择一些网址,将这些网址放入待抓取的队列中。
从队列中取出URL,然后解析DNS得到主机IP,然后保存该IP对应的HTML页面下载HTML页面,保存到搜索引擎的本地服务器,然后将抓取到的url放入爬取的队列。
分析这些网页的内容,找出网页中其他的URL链接,继续第二步,直到爬取结束。
搜索引擎如何获取新的 网站 URL:
a) 主动向搜索引擎提交 网站
B) 在其他 网站 中设置外联
C) 搜索引擎会配合DNS服务商快速收录new网站
DNS 是一种将域名解析为 IP 地址的技术。
万能爬虫不代表什么都能爬,他也得遵守规则:
Robots Protocol:该协议将规定通用爬虫爬取网页的权限(告诉搜索引擎哪些可以爬,哪些不能爬)
Robots.txt 并非所有爬虫都遵守,一般只有大型搜索引擎爬虫会遵守
现有位置:robots.txt 文件应放在 网站 根目录下
例如:
常用爬虫工作流程:
抓取网页、存储数据、处理内容并提供检索/排名服务
搜索引擎排名:
1.PageRank值:根据网站的流量(点击/浏览/人气)统计,流量越高,网站的排名越高。
2.PPC:谁付出的多,排名就高。
万能爬虫的缺点:
1.只提供文本相关内容(HTML、Word、PDF)等,不提供多媒体文件(音乐、图片、视频)和二进制文件(程序、脚本)
2. 提供相同的结果,不为不同背景的人提供不同的搜索结果
3.无法提供人工语义检索
通用搜索引擎的局限性
1.一般搜索引擎返回的网页有90%是无用的。
2.中文搜索引擎自然语言检索理解困难
3.信息的数量和覆盖范围都有限制。
4.搜索引擎以关键词搜索为主,一般的搜索引擎对图片、数据库、音视频多媒体内容无能为力。
5.搜索引擎的社区化和个性化不好。大多数搜索引擎没有考虑到人们的地区、性别和年龄的差异。
6.搜索引擎不擅长抓取动态网页
为了解决通用爬虫的缺点,出现了专注爬虫。
专注于爬虫
Spotlight on the crawler:爬虫程序员针对某个内容编写的爬虫。
面向主题的爬虫,面向需求的爬虫:对特定容量的信息进行爬取,并确保内容需求尽可能相关。
1.累积爬虫:从头到尾,不断的爬取,过程中会进行重复的操作。
2.增量爬虫:下载的网页是增量更新的,只爬取新生成或改变的网络爬虫
3.深网爬虫:无法通过静态链接获取的网页,隐藏在搜索表单后面,只有用户提交一些关键词才能获取
0.1数据爬取的基本流程
指定要抓取的url
根据 requests 模块发起请求并得到响应
获取响应对象中的数据
数据分析
用于持久存储
在持久存储之前需要进行指定的数据解析。因为大多数情况下的需求,我们会指定使用焦点爬虫,也就是爬取页面指定部分的数据值,而不是整个页面的数据。
1.正则表达式
特点:为我们提供了获取数据的捷径。这种正则表达式虽然更容易适应未来的变化,但存在难写、难构造、可读性差、代码繁多等问题。但是,使用正则表达式来实现目标信息的准确采集
同时,网页经常发生变化,导致网页的布局发生了一些细微的变化。这时候之前写的正则表达式不能满足要求,需要重写,也不容易调试。当要匹配的内容很多时,使用正则表达式提取目标信息会导致程序运行速度变慢,消耗更多内存。
2.BS4 (美汤)
特点:BeautifulSoup虽然比正则表达式理解起来更复杂,但更容易构造和理解。
BeautifulSoup 是一个非常流行的 Python 模块。该模块可以解析网页并提供方便的界面来定位内容。这个模块可以通过 pip install beautifulsoup4 安装。
第一步是将下载的 HTML 内容解析成一个汤文档。由于大多数网页没有格式良好的 HTML,BeautifulSoup 需要确定实际格式。除了添加 <html> 和 <body> 标记以使其成为完整的 HTML 文档外,BeautifulSoup 还能正确解析缺少的引号和关闭标记。通常使用 find() 和 find_all() 方法来定位我们需要的元素。
3.Xpath
特征:
Lxml:Lxml模块是C语言编写的,解析速度比BeautifulSoup快,安装过程也比较复杂,
XPath 使用路径表达式来选择 XML 文档中的节点。通过遵循路径或步骤来选择节点。
使用 lxml 模块(如 BeautifulSoup)的第一步是将可能无效的 HTML 解析为统一格式。尽管 Lxml 正确解析了属性周围缺少的引号并关闭标签,但该模块不会添加额外的 <html> 和 <body> 标签。
在线复制Xpath表达式可以很方便的复制Xpath表达式(即在浏览器的开发者工具上找到定位标签并右键复制生成的xpath表达式)。但是这种方法得到的Xpath表达式一般不能在程序中使用,长的也看不出来。因此,Xpath 表达式一般要自己使用。
4.CSS
CSS 选择器表示用于选择元素的模式。BeautifulSoup 结合了 CSS 选择器的语法和它自己易于使用的 API。在网络爬虫的开发过程中,对于熟悉 CSS 选择器语法的人来说,使用 CSS 选择器是一种非常方便的方法。