使用 Python 教程进行网页抓取

使用 Python 教程进行网页抓取

假设您想从竞争对手的网站上抓取他们的定价页面信息。 你会怎么做? 手动复制粘贴或输入数据太慢、耗时且容易出错。 您可以使用 Python 轻松地将其自动化。

让我们看看如何在本教程中使用 python 抓取网页。

有哪些不同的 Python 网络抓取库?

Python 在网络抓取方面很受欢迎,因为有大量的第三方库可以抓取复杂的 HTML 结构、解析文本以及与 HTML 表单交互。 在这里,我们列出了一些顶级 Python 网络抓取库。

  • urllib3 是一个强大的 Python HTTP 客户端库。 这使得以编程方式执行 HTTP 请求变得容易。 它处理 HTTP 标头、重试、重定向和其他低级细节,使其成为网络抓取的优秀库。 它还支持 SSL 验证、连接池和代理。
  • 美丽汤 允许您解析 HTML 和 XML 文档。 您可以使用 API 轻松浏览 HTML 文档树并提取标签、元标题、属性、文本和其他内容。 BeautifulSoup 还以其强大的错误处理而闻名。
  • 机械汤 有效地自动化网络浏览器和网站之间的交互。 它为模拟人类行为的网络抓取提供了一个高级 API。 使用 MechanicalSoup,您可以像真实用户一样与 HTML 表单交互、单击按钮以及与元素交互。
  • 要求 是一个简单但功能强大的 Python 库,用于发出 HTTP 请求。 它旨在易于使用和直观,具有干净且一致的 API。 使用请求,您可以轻松发送 GET 和 POST 请求,并处理 cookie、身份验证和其他 HTTP 功能。 由于其简单易用,它也被广泛用于网络抓取。
  • 允许您自动化 Web 浏览器,例如 Chrome、Firefox 和 Safari,并模拟人与网站的交互。 您可以单击按钮、填写表单、滚动页面和执行其他操作。 它还用于测试 Web 应用程序和自动执行重复性任务。
  • 熊猫 允许以各种格式存储和操作数据,包括 CSV、Excel、JSON 和 SQL 数据库。 使用 Pandas,您可以轻松清理、转换和分析从网站提取的数据。

只需单击一下,即可从任何网页中提取文本。 前往 Nanonets 网站抓取工具, 添加 URL 并单击“抓取”,并立即将网页文本下载为文件。 立即免费试用。

Web Scraping with Python Tutorial PlatoBlockchain Data Intelligence. Vertical Search. Ai.


如何使用python从网站上抓取数据?

让我们来看看使用 Python 抓取网站数据的分步过程。

第 1 步:选择网站和网页 URL

第一步是选择要抓取的网站。 对于这个特定的教程,让我们抓取 https://www.imdb.com/. 我们将尝试提取网站上评分最高的电影的数据。

第 2 步:检查网站

现在下一步是了解网站结构。 了解您感兴趣的元素的属性是什么。 右键单击该网站以选择“检查”。 这将打开 HTML 代码。 使用检查器工具查看要在代码中使用的所有元素的名称。

Web Scraping with Python Tutorial PlatoBlockchain Data Intelligence. Vertical Search. Ai.

请注意这些元素的类名和 ID,因为它们将在 Python 代码中使用。

第 3 步:安装重要的库

如前所述,Python 有几个网络抓取库。 今天,我们将使用以下库:

  • 要求 – 用于向网站发出 HTTP 请求
  • 美丽汤 – 用于解析 HTML 代码
  • 大熊猫 – 用于将抓取的数据存储在数据框中
  • – 用于在请求之间添加延迟,以避免网站被请求淹没

使用以下命令安装库

pip install requests beautifulsoup4 pandas time

第 4 步:编写 Python 代码

现在,是时候编写主要的 python 代码了。 该代码将执行以下步骤:

  • 使用请求发送 HTTP GET 请求
  • 使用 BeautifulSoup 解析 HTML 代码
  • 从 HTML 代码中提取所需的数据
  • 将信息存储在熊猫数据框中
  • 在请求之间添加延迟以避免网站被请求淹没

下面是从 IMDb 中抓取评分最高的电影的 Python 代码:

import requests
from bs4 import BeautifulSoup
import pandas as pd
import time
# URL of the website to scrape
url = "https://www.imdb.com/chart/top"
# Send an HTTP GET request to the website
response = requests.get(url)
# Parse the HTML code using BeautifulSoup
soup = BeautifulSoup(response.content, 'html.parser')
# Extract the relevant information from the HTML code
movies = []
for row in soup.select('tbody.lister-list tr'):
title = row.find('td', class_='titleColumn').find('a').get_text()
year = row.find('td', class_='titleColumn').find('span', class_='secondaryInfo').get_text()[1:-1]
rating = row.find('td', class_='ratingColumn imdbRating').find('strong').get_text()
movies.append([title, year, rating])
# Store the information in a pandas dataframe
df = pd.DataFrame(movies, columns=['Title', 'Year', 'Rating'])
# Add a delay between requests to avoid overwhelming the website with requests
time.sleep(1)

第 5 步:导出提取的数据

现在,让我们将数据导出为 CSV 文件。 我们将使用 pandas 库。

# Export the data to a CSV file
df.to_csv('top-rated-movies.csv', index=False)

第 6 步:验证提取的数据

打开 CSV 文件以验证数据是否已成功抓取和存储。

我们希望本教程能帮助您轻松地从网页中提取数据。


只需单击一下,即可从任何网页中提取文本。 前往 Nanonets 网站抓取工具, 添加 URL 并单击“抓取”,并立即将网页文本下载为文件。 立即免费试用。

Web Scraping with Python Tutorial PlatoBlockchain Data Intelligence. Vertical Search. Ai.


如何解析来自网站的文本?

您可以使用 BeautifulSoup 或 lxml 轻松解析网站文本。 以下是与代码一起涉及的步骤。

  • 我们将向 URL 发送 HTTP 请求并获取网页的 HTML 内容。
  • 有了 HTMl 结构后,我们将使用 BeautifulSoup 的 find() 方法来定位特定的 HTML 标签或属性。
  • 然后提取带有text属性的文本内容。

下面是如何使用 BeautifulSoup 解析网站文本的代码:

import requests
from bs4 import BeautifulSoup
# Send an HTTP request to the URL of the webpage you want to access
response = requests.get("https://www.example.com")
# Parse the HTML content using BeautifulSoup
soup = BeautifulSoup(response.content, "html.parser")
# Extract the text content of the webpage
text = soup.get_text()
print(text)

如何使用 Python 抓取 HTML 表单?

要使用 Python 抓取 HTML 表单,您可以使用 BeautifulSoup、lxml 或 mechanize 等库。 以下是一般步骤:

  1. 将 HTTP 请求发送到包含您要抓取的表单的网页的 URL。 服务器通过返回网页的 HTML 内容来响应请求。
  2. 访问 HTML 内容后,您可以使用 HTML 解析器定位要抓取的表单。 例如,您可以使用 BeautifulSoup 的 find() 方法来定位表单标签。
  3. 找到表单后,您可以使用 HTML 解析器提取输入字段及其对应的值。 例如,您可以使用 BeautifulSoup 的 find_all() 方法定位表单中的所有输入标签,然后提取它们的名称和值属性。
  4. 然后,您可以使用此数据来提交表单或执行进一步的数据处理。

下面是一个如何使用 mechanize 抓取 HTML 表单的示例:


import mechanize
# Create a mechanize browser object
browser = mechanize.Browser()
# Send an HTTP request to the URL of the webpage with the form you want to scrape
browser.open("https://www.example.com/form")
# Select the form to scrape
browser.select_form(nr=0)
# Extract the input fields and their corresponding values
for control in browser.form.controls:
print(control.name, control.value)
# Submit the form
browser.submit()

从任何网页中提取文本 只需单击一下。 前往 Nanonets 网站抓取工具,添加 URL 并单击“抓取”,然后立即将网页文本下载为文件。 立即免费试用。

Web Scraping with Python Tutorial PlatoBlockchain Data Intelligence. Vertical Search. Ai.


比较所有 Python 网络抓取库

让我们比较一下所有的 python 网络抓取库。 它们都有出色的社区支持,但它们在易用性和用例方面有所不同,如博客开头所述。

自学资料库

易用性

性能

高度灵活

社区支持

法律/道德考虑

美丽汤

便于

中等

遵守使用条款

Scrapy

中等

遵守使用条款

便于

中等

遵循最佳做法

要求

便于

遵守使用条款

查询

便于

遵守使用条款

长XML

中等

遵守使用条款

机械汤

便于

中等

遵守使用条款

美汤4

便于

中等

遵守使用条款

蜘蛛网

便于

遵守使用条款

结论

Python 是实时抓取网站数据的绝佳选择。 另一种选择是使用自动化 网站抓取工具 l比如纳米网。 您可以使用 免费的网站到文本工具. 但是,如果您需要为大型项目自动抓取网页,您可以联系 Nanonets。

只需单击一下,即可从任何网页中提取文本。 前往 Nanonets 网站抓取工具,添加 URL 并单击“抓取”,然后立即将网页文本下载为文件。 立即免费试用。

Web Scraping with Python Tutorial PlatoBlockchain Data Intelligence. Vertical Search. Ai.

常见问题

如何使用 HTML 解析器使用 Python 进行网页抓取?

要在 Python 中使用 HTML 解析器进行网页抓取,您可以使用 BeautifulSoup 或 lxml 等库。 以下是一般步骤:

  1. 向您要访问的网页的 URL 发送 HTTP 请求。 服务器通过返回网页的 HTML 内容来响应请求。
  2. 一旦访问了 HTML 内容,就可以使用 HTML 解析器提取所需的数据。 例如,您可以使用 BeautifulSoup 的 find() 方法来定位特定的 HTML 标签或属性,然后提取具有文本属性的文本内容。

以下是如何使用 BeautifulSoup 进行网络抓取的示例:

蟒蛇

进口要求

从bs4导入BeautifulSoup

# 向你要访问的网页的URL发送HTTP请求

响应 = requests.get(“https://www.example.com”)

# 使用 BeautifulSoup 解析 HTML 内容

soup = BeautifulSoup(response.content, “html.parser”)

# 从网页中提取特定数据

标题=汤.标题

打印(标题)

在这个例子中,我们使用 BeautifulSoup 来解析网页的 HTML 内容,并使用 title 属性提取页面的标题。

为什么使用网页抓取?

Web 抓取用于使用自动化工具或脚本抓取网站数据。 它可以用于多种用途

  • 从多个网页中提取数据并聚合数据以进行进一步分析。
  • 通过抓取各种时间戳上的实时数据来推导趋势。
  • 监控竞争对手的定价趋势。
  • 通过从网站抓取电子邮件来产生潜在客户。 

什么是网页抓取?

网络抓取我曾经从非结构化的 HTML 网站中提取结构化数据。 Web 抓取涉及使用自动化 网页抓取工具 或脚本来解析复杂的网页。

网页抓取合法吗?

当您试图解析网站上公开可用的数据时,网络抓取是合法的。 一般来说,用于个人用途或非商业目的的网络抓取是合法的。 但是,抓取受版权保护或被视为机密或私人的数据可能会导致法律问题。

在某些情况下,网络抓取可能会违反网站的服务条款。 许多网站包含禁止自动抓取其内容的条款。 如果网站所有者发现有人在抓取他们的内容,他们可能会采取法律行动来阻止它。

为什么 Python 适合网络抓取?

Python 是一种流行的网络抓取编程语言,因为它具有以下几个优点:

  • Python 具有简单易读的语法,对于初学者来说很容易学习。
  • Python 拥有庞大的开发人员社区,他们为各种任务(如网络抓取)开发工具。
  • Python 有许多网络抓取库,如 Beautiful Soup 和 Scrapy。
  • Python 可以完成很多任务,比如抓取, 提取网站数据到excel、与 HTML 表单交互等。
  • Python 具有可扩展性,适合抓取大量数据。

什么是网络抓取的例子?

Web 抓取是使用自动化脚本或工具从网页中提取数据。 例如,网络抓取用于从网站抓取电子邮件以产生潜在客户。 另一个网络抓取示例是提取竞争对手的定价信息以改进您的定价结构。

网络抓取需要编码吗?

Web 抓取将非结构化网站数据转换为结构化格式。 除了使用编码来抓取网站外,您还可以使用完全不需要编码的无代码网络抓取工具。

时间戳记:

更多来自 人工智能与机器学习