最好用国外网页视频抓取工具软件( 浏览器“Vagrant技术入门”这篇帖子对应的源码内容)

优采云 发布时间: 2021-12-28 09:05

  最好用国外网页视频抓取工具软件(

浏览器“Vagrant技术入门”这篇帖子对应的源码内容)

  

  关注开源中国OSC头条,获取最新技术信息

  参与翻译(3人):ZICK_ZEON, xiaoaiwhc1, Border Town

  概述

  HTML 几乎是直截了当的。CSS 是一个很大的进步,它清楚地区分了页面的结构和外观。JavaScript 增添了一些魅力。理论上,情况确实如此。现实世界仍然有些不同。

  在本教程中,您将了解您在浏览器中看到的内容是如何实际呈现的,以及如何在必要时获取它。特别是,您将学习如何计算 Disqus 评论。我们的工具是适用于 Python 和这种语言的出色软件包,例如 request、BeautifulSoup 和 Selenium。

  我应该什么时候使用网络爬虫?

  网络爬虫是一种自动获取网页内容的实践,旨在实现人机交互,对其进行解析,并提取一些信息(可能是其他页面的链接)。如果没有其他方法可以提取必要的网页信息,网络爬虫是一种必要且有效的技术方法。理想情况下,应用程序依靠提供良好的专用 API 以编程方式自动获取网页数据。但在以下情况下,最好不要使用网页抓取技术:

  了解真实网页

  让我们看看一些常见的 Web 应用程序代码的实现,以了解我们面临的问题。比如在 Disqus 的“Vagrant 技术介绍”帖子页面底部有一些评论:

  

  为了抓取这些评论,我们需要先在页面上找到它们。

  查看页面代码

  自 1990 年代以来,每个浏览器都支持查看当前页面的 HTML 代码。以下是源代码视图中查看的“Vagrant 技术简介”帖子对应的源代码片段。这个源代码开头有很多压缩的丑陋的 JavaScript 代码,这些代码与本文本身的内容无关。这是“小”部分之一:

  

  这是页面中的一些实际 HTML 代码:

  

  代码看起来很乱,在页面的源代码中也找不到Disqus的注释,这让你有点意外。

  强大的内联框架

  原来页面是一个“混搭”,Disqus 的评论嵌入在 iframe(内联框架)元素中。可以在评论区右击找到,在那里可以看到框架信息和源码:

  

  这说得通。将第三方内容嵌入到 iframe 中是使用 iframe 的主要应用场景之一。让我们在主页源代码中找到 iframe 标签。而已!主页源中没有 iframe 标记。

  JavaScript 生成的标签

  之所以省略,是因为查看页面源显示的是从服务器获取的内容。但是,最终浏览器渲染出来的 DOM(文档对象模型)可能会有很大的不同。JavaScript 开始工作,您可以随意操作 DOM。无法找到 iframe,因为从服务器检索页面时它不存在。

  静态抓取与动态抓取

  静态抓取会忽略JavaScript,它可以直接从服务器获取网页代码,不依赖浏览器。这就是你通过“查看源代码”看到的,然后就可以提取信息了。如果要查找源代码中已经存在的内容,则无需进一步操作。但是,如果您要查找的内容像上面的 Disqus 评论一样嵌入在 iframe 中,则必须使用动态抓取来获取内容。

  动态爬取使用真实浏览器(或非接口浏览器),首先运行页面中的JavaScript,完成动态内容的处理和加载。之后,它会查询 DOM 以获取它要查找的内容。有时,您还需要让浏览器自动模拟人工操作来获取您需要的内容。

  使用 Requests 和 BeautifulSoup 进行静态抓取

  下面我们来看看如何使用两个经典的Python包进行静态爬取:requests用于爬取网页内容。BeautifulSoup 用于解析 HTML。

  安装 Requests 和 BeautifulSoup

  先安装pipenv,然后运行命令:pipenv install requests beautifulsoup4

  它首先为你创建一个虚拟环境,然后在虚拟环境中安装这两个包。如果你的代码在 gitlab 上,你可以使用命令 pipenv install 来安装它。

  获取网页内容

  只需要一行代码就可以抓取带有请求的网页内容:r = requests.get(url)。

  该代码返回一个响应对象,其中收录

许多有用的属性。最重要的属性是 ok 和 content。如果请求失败, r.ok 为 False 并且 r.content 收录

错误消息。content 代表一个字节流,作为 text 处理时,最好解码成 utf-8.

  

  如果代码正常返回并且没有报错,那么r.content会收录

所请求网页的源代码(也就是你在“查看源代码”中看到的)。

  使用 BeautifulSoup 查找元素

  下面的get_page()函数会获取给定URL的网页源代码,然后解码成utf-8,最后将内容传递给BeautifulSoup对象并返回,BeautifulSoup使用HTML解析器进行解析。

  

  拿到 BeautifulSoup 对象后,我们就可以开始解析需要的信息了。

  BeautifulSoup 提供了多种搜索方法来定位网页中的元素,可以深入挖掘嵌套元素。

  Tuts+网站有很多培训教程,这里是我的主页。每个页面最多收录

12 个教程。如果您已经获得了12个教程,您可以转到下一页。每篇文章都被标记为环绕。下面的功能是找到页面中所有的文章元素,然后找到对应的链接,最后提取教程的网址。

  

  使用 Selenium 动态爬取

  静态爬取非常适合系列文章,但是正如我们前面看到的,Disqus 的评论是通过 JavaScript 写在 iframe 中的。为了得到这些评论,我们需要让浏览器自动与DOM交互。做这种事情的最好的工具之一是 Selenium。

  Selenium 主要用于 Web 应用程序自动化测试,但它也是一个很好的通用浏览器自动化工具。

  安装硒

  使用以下命令安装 Selenium: pipenv install selenium

  选择您的网络驱动程序

  Selenium 需要一个 Web 驱动程序(用于自动化的浏览器)。对于网络爬虫,您通常不需要关心您选择的驱动程序。我建议使用 Chrome 驱动程序。Selenium手册中有相关介绍。

  比较 Chrome 和 PhantomJS

  在某些情况下,您可能想要使用无头浏览器。理论上,PhantomJS 正是那个 Web 驱动程序。但实际上,有人报告了一些仅在 PhantomJS 中出现的问题,而这些问题在 Selenium 使用 Chrome 或 Firefox 时不会出现。我喜欢从等式中删除这个变量并使用实际的 Web 浏览器驱动程序。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线