抓取网页新闻(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 选择器是一种非常方便的方法。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线