使用 Python 在 Web CSS 选择器中进行爬取

介绍

这篇博文会定期更新。它是关于在进行网络抓取时了解 CSS 选择器,以及哪些工具可能方便使用。

在 SerpApi,我们遇到了不同类型的选择器,其中一些非常复杂,包括复杂的逻辑,例如,逻辑可能包括选择器:has():not()如构建我们的 API 的旅程。

我们要指出的是,这篇博文并不是完整的 CSS 选择器参考,而是对常用和更高级类型的选择器以及如何在使用代码示例进行网络抓取时使用它们的迷你导览。

先决条件

基本熟悉bs4库,或者您正在使用的任何 HTML 解析器包/框架,因为不同语言、框架、包中 CSS 选择器的用法没有太大区别。

安装库:

pip install requests lxml beautifulsoup4

什么是 CSS 选择器

CSS 选择器是用于选择匹配你想要的元素风格从 HTML 页面中提取。

选择器小工具

让我们从简单的SelectorGadget Chrome 扩展程序开始。此扩展允许通过在浏览器中单击所需的元素来快速获取 CSS 选择器,并返回一个 CSS 选择器。

SelectorGadget 是一种开源工具,可让复杂站点上的 CSS 选择器生成和发现变得轻而易举。

用例

  • Nokogiri用于使用和等工具进行网页抓取BeautifulSoup
  • jQuery为动态站点生成选择器。
  • 作为检查 JavaScript 生成的 DOM 结构的工具。
  • 作为一种工具,可帮助您使用样式表仅对页面上的特定元素进行样式设置。
  • 用于seleniumphantomjs测试。

使用 SelectorGadget 时,它会突出显示以下元素:

  • 黄色,这意味着它正在猜测用户正在寻找什么,并且需要可能的额外说明。
    使用 Python 在 Web CSS 选择器中进行爬取_第1张图片

  • 红色从匹配选择中排除。
    使用 Python 在 Web CSS 选择器中进行爬取_第2张图片

  • 绿色包括匹配选择。

使用 Python 在 Web CSS 选择器中进行爬取_第3张图片


手动选择 CSS 选择器

由于 SelectorGadget 不是一个神奇的全能工具,有时它无法获取所需的元素。当网站 HTML 树结构不佳,或者网站是通过 JavaScript 呈现时,就会发生这种情况。

当它发生时,我们通过开发工具(F12在键盘上或CTRL+SHIFT+C)使用元素选项卡来定位和抓取 CSS 选择器或 HTML 元素:

  • 类型选择器:
  • 类选择器:.class
  • id 选择器:#id
  • 属性选择器:[attribute]

CSS 选择器的类型

类型选择器

✍语法:element_name

类型选择器按节点名称匹配元素。换句话说,它选择 HTML 文档中给定类型的所有元素。

soup.select('a')      # returns all  elements
soup.select('span')   # returns all  elements
soup.select('input')  # returns all  elements
soup.select('script') # returns all 
                    
                    

你可能感兴趣的:(Python开发专栏,python,爬虫)