2024年6个最佳 Python 网页爬虫库(非常详细)零基础入门到精通,收藏这一篇就够了

778 篇文章 30 订阅
387 篇文章 12 订阅

哪些 Python Web 抓取库好用?

一个好的网络抓取的 Python 库应该是快速的、可扩展的,并且能够抓取任何类型的网页。在本文中,我们将讨论六个最佳技术库、它们的优缺点,以及一些快速示例,以帮助您了解它们的工作原理。

什么是最好的 Python Web 抓取库

我做了一些测试来检查验证哪个 Python Web 抓取库能够方便地抓取网页,如下是列表:

  1. Selenium.

2. Requests.

3. Beautiful Soup.

4. Playwright.

5. Scrapy.

6. urllib

  1. Selenium

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Selenium 是一个广泛使用的 Python 抓取库,用于抓取动态 Web 内容。它通过单击按钮、填写表格等来模仿人类交互。

Selenium 与许多浏览器兼容,例如 Chrome 和 Firefox,允许您选择最适合您的网络抓取项目的浏览器。这种灵活性有助于确保在不同的浏览器环境中获得一致的结果。

👍 优点: 它可以抓取动态网页。多浏览器支持。

👎 缺点:Selenium可能很慢。它无法获取状态代码。这既费时又费力。

要使用 selenium,请更新您的文件并粘贴以下代码:scraper.py

from selenium import webdriver``from selenium.webdriver.common.by import By``   ``url = "https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses/"``   ``driver = webdriver.Chrome()``driver.get(url)``   ``items = driver.find_elements(By.CSS_SELECTOR, ".grid a[data-testid='link']")``for item in items:`    `print(item.text)``   

运行代码后,您应该会看到控制台上打印的四个项目的名称:

Sunglasses Spektre multi``Sunglasses Spektre brown``Sunglasses Spektre grey``Sunglasses Spektre black

2. Requests

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Requests 是一个用户友好的 Python 网络抓取库,建立在 urllib3 之上。它可以直接获取一个没有实例的 URL。此外,发出请求后,可以使用响应对象上的属性访问网页的内容。

它简化了发送 HTTP 请求和处理响应的过程,使开发人员更容易与 Web 服务和 API 进行交互。

👍 优点:

  • 速度很快。

  • 这很容易理解。

👎 缺点:

  • 它无法使用 JavaScript 抓取交互式或动态网站。

  • 这对敏感信息不利,因为它可能会保留在浏览器的内存中。

如何使用请求抓取网页

让我们来看看 Vue 店面页面。页面上四个项目中每个项目的标题都包含在锚点标记中,这些标记将属性设置为类为 的元素内。data-testid``link``grid

步骤 1:使用 GET 方法获取主要内容

使用以下代码:

import requests` `r = requests.get('https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses')

该方法返回一个响应对象。您可以从中获取带有属性的状态代码(在本例中,它返回代码)和带有 content 属性的 HTML 数据。响应对象保存在变量 中。GET``status_code``200``r

第 2 步:使用 BeautifulSoup 提取特定信息

通过使用 BeautifulSoup 对象上的 select 方法提取所需的信息,将属性 data-testid 设置为 in 具有类的元素中的锚标记 。link``grid

from bs4 import BeautifulSoup` `soup = BeautifulSoup(r.content, 'html.parser') ``for item in soup.select('.grid a[data-testid="link"]'):`  `print(item.text)``   

这将返回在文档上找到的所有具有指定属性的锚标记的列表,并且使用简单的循环,您可以在屏幕上打印所需的信息。使用以下代码更新文件:for``scraper.py

import requests``from bs4 import BeautifulSoup``   ``r = requests.get('https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses')``soup = BeautifulSoup(r.content, 'html.parser')``   ``   ``for item in soup.select('.grid a[data-testid="link"]'):`    `print(item.text)

祝贺!你做到了;您已成功使用请求 Python 库进行 Web 抓取。输出应如下所示:

Sunglasses Spektre multi``Sunglasses Spektre brown``Sunglasses Spektre grey``Sunglasses Spektre black

4. Beautiful Soup

Beautiful Soup 是一个功能强大的 Python Web 抓取库,特别适用于解析 XML 和 HTML 文档。它的便利性是其最受欢迎的福利之一。Beautiful Soup 建立在众所周知的 Python 解析包之上,允许您尝试不同的技术。

使用 Beautiful Soup,您可以扫描已解析的文档并识别特定类型或格式下的所有数据。它具有很强的编码检测能力。

👍 优点:

  • 易于使用和导航。

  • 可扩展的功能。

  • 积极的社区支持。

  • 详细文档。

👎 缺点:

  • 有限的支持。

  • 您需要安装多个依赖项。

更多:看看我们的 Beautiful Soup 网页抓取教程,学习使用这个 Python 库

5.Playwright

Playwright 是一个开源的网络抓取库,可以更轻松地从不同浏览器的网站中提取数据,因为它提供了一个出色的跨浏览器自动化解决方案。

尽管 Playwright 是用户友好的,但其概念和功能可能仍需要一些时间才能正确理解。而且由于它需要运行不同的浏览器实例,因此它比其他库消耗更多的内存。

👍 优点:

  • 跨浏览器支持。

  • 高级 API。

  • 强大的选择器引擎。

  • 无头模式。

👎 缺点:

  • 它是资源密集型的。

  • 持续维护或更新。

  • 陡峭的学习曲线。

更多:查看 Playwright 网页抓取教程以开始使用。

6.Scrapy

Scrapy 是一个高级框架,用于从高度复杂的网站中抓取数据。有了它,就可以使用预定义的函数或外部库绕过验证码。

您可以编写一个简单的 Scrapy 爬虫,通过 Python 类使用对象定义来抓取 Web 数据。但是,与其他 Python 抓取库相比,它不是特别用户友好。

尽管此库的学习曲线很陡峭,但您可以使用它做很多事情,并且它在执行爬网任务时非常高效。

👍 优点:

  • 用于抓取目的的一般框架。

  • 强大的编码支持。

  • 它不需要 BeautifulSoup。

👎 缺点:

  • 陡峭的学习曲线。

  • Scrapy 无法抓取动态网页。

  • 对于不同的网站,它需要不同的安装步骤。

如何使用 Scrapy 抓取网页

第 1 步:创建 Spider

创建一个名为的新类,并为其指定参数 。在类中,将名称定义为 ,并定义为要抓取的 URL 列表。AccessorySpider``scrapy.Spider``mySpider``start_urls

import scrapy ``class AccessorySpider(scrapy.Spider):`    `name='mySpider'`    `start_urls = ['https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses',]

步骤 2:定义解析方法

parse 方法采用一个参数,您可以使用响应对象上的方法检索每个项目。CSS 方法可以将 item 类的 css 选择器作为其参数:response``CSS

 response.css('.grid a[data-testid="link"]')

若要检索具有该类的所有项,请使用 XPath 方法进行循环并打印内容:for

for item in response.css('.grid a[data-testid="link"]'):`    `print(item.xpath('string(.)').get())

使用以下代码更新文件:scraper.py

import scrapy
class AccessorySpider(scrapy.Spider):`    `name='mySpider'`    `start_urls = ['https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses']``   `    `def parse(self, response):`        `for item in response.css('.grid a[data-testid="link"]'):`            `print(item.xpath('string(.)').get())

通过在终端中执行以下脚本来运行爬虫,您应该会看到屏幕上打印的项目列表:

Sunglasses Spektre multi``Sunglasses Spektre brown``Sunglasses Spektre grey``Sunglasses Spektre black

就是这样!

7. urllib3

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

urllib3 是一个 HTTP 客户端,以其可靠性、性能优化和广泛的功能而闻名。它为发出 HTTP 请求提供了坚实的基础,并且经常被其他 Python Web 抓取库或框架使用。

它适用于实例(类)、管理连接池的响应对象和线程安全。PoolManager

👍 优点:

  • 扩展。

  • 良好的社区支持。

  • 它使用 处理并发性。PoolManager

👎 缺点:

  • 与 Requests 等其他库相比,语法复杂。

  • urllib3 无法提取动态数据。

如何使用 urllib3 抓取网页

步骤一:创建PoolManager实例

导入 urllib3 库,然后创建一个实例并将其保存到名为 :PoolManager``http

import urllib3` `http = urllib3.PoolManager()

创建实例后,您可以使用该方法发出 HTTP 请求。PoolManager``GET``request()

第 2 步:发出 GET 请求

在实例上使用该方法。您可以为 request 方法提供两个参数来发出简单的请求。在这种情况下,第一个是字符串,第二个是要抓取的 URL 给出的字符串:request``PoolManager``GET``GET

r = http.request('GET', 'https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses')

步骤 3:从响应对象中提取数据

请求响应由 HTTPResponse 对象给出,您可以从中获取状态代码等信息。让我们使用响应对象和 BeautifulSoup 上的方法获取数据:data

soup = BeautifulSoup(r.data, 'html.parser')

要提取数据,请将 for 循环与方法和项的 css 选择器一起使用:select

for item in soup.select('.grid a[data-testid="link"]'):`    `print(item.text)

使用以下代码更新文件:scraper.py

import urllib3``from bs4 import BeautifulSoup``   ``   ``http = urllib3.PoolManager()``   ``   ``r = http.request('GET', 'https://demo.vuestorefront.io/category/accessories/accessories-women/accessories-women-sunglasses')``soup = BeautifulSoup(r.data, 'html.parser')``   ``   ``for item in soup.select('.grid a[data-testid="link"]'):`    `print(item.text)

就是这样!你已经使用 urllib3 Python 网页抓取库成功地从 Vue 店面的配件类别中抓取了数据:

Sunglasses Spektre multi``Sunglasses Spektre brown``Sunglasses Spektre grey``Sunglasses Spektre black

黑客&网络安全如何学习

今天只要你给我的文章点赞,我私藏的网安学习资料一样免费共享给你们,来看看有哪些东西。

1.学习路线图

攻击和防守要学的东西也不少,具体要学的东西我都写在了上面的路线图,如果你能学完它们,你去就业和接私活完全没有问题。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

内容涵盖了网络安全法学习、网络安全运营等保测评、渗透测试基础、漏洞详解、计算机基础知识等,都是网络安全入门必知必会的学习内容。

(都打包成一块的了,不能一一展开,总共300多集)

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

3.技术文档和电子书

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

4.工具包、面试题和源码

“工欲善其事必先利其器”我为大家总结出了最受欢迎的几十款款黑客工具。涉及范围主要集中在 信息收集、Android黑客工具、自动化工具、网络钓鱼等,感兴趣的同学不容错过。

还有我视频里讲的案例源码和对应的工具包,需要的话也可以拿走。

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

最后就是我这几年整理的网安方面的面试题,如果你是要找网安方面的工作,它们绝对能帮你大忙。

这些题目都是大家在面试深信服、奇安信、腾讯或者其它大厂面试时经常遇到的,如果大家有好的题目或者好的见解欢迎分享。

参考解析:深信服官网、奇安信官网、Freebuf、csdn等

内容特点:条理清晰,含图像化表示更加易懂。

内容概要:包括 内网、操作系统、协议、渗透测试、安服、漏洞、注入、XSS、CSRF、SSRF、文件上传、文件下载、文件包含、XXE、逻辑漏洞、工具、SQLmap、NMAP、BP、MSF…

因篇幅有限,仅展示部分资料,需要点击下方链接即可前往获取

CSDN大礼包:《黑客&网络安全入门&进阶学习资源包》免费分享

零基础Python爬虫、数据分析与可视化从入门精通》是一本帮助零基础学习Python爬虫、数据分析与可视化的书籍。通过阅读该书并实践书中的案例,读者可以从入门精通地掌握这些技术。 首先,书籍的第一部分主要介绍了Python的基础知识。包括Python的安装、基本语法、数据类型、条件语句、循环结构、函数、模块等内容。通过学习这些基础知识,读者可以对Python有一个全面的了解,并为后续的爬虫、数据分析与可视化打下坚实的基础。 接下来,书籍的第二部分开始介绍爬虫的相关知识。包括HTTP协议、正则表达式、XPath、BeautifulSoup、Scrapy等内容。通过学习这些知识,读者可以了解爬虫的基本原理,并学会使用相关工具进行网页数据的抓取和解析。 然后,书籍的第三部分介绍了数据分析的相关知识。包括数据清洗、数据处理、数据可视化等内容。通过学习这些知识,读者可以了解如何处理和分析不同类型的数据,并使用常用的数据分析工具进行数据可视化。 最后,书籍的第四部分综合运用前面学习到的知识,通过实例项目来提高读者的实战能力。例如,通过爬取网站上的数据,然后进行数据分析和可视化展示。 综上所述,《零基础Python爬虫、数据分析与可视化从入门精通》这本书通过详细的讲解和实例项目,帮助读者从零开始学习Python爬虫、数据分析与可视化,并最终达到精通的水平。对于想要学习这些技术的读者来说,这是一本很好的入门指南。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值