网页视频抓取脚本(Python模块从网页中提取数据或进行网页抓取的知识 )
优采云 发布时间: 2022-01-04 19:11网页视频抓取脚本(Python模块从网页中提取数据或进行网页抓取的知识
)
在前面的章节中,我们学习了通过各种 Python 模块从网页中提取数据或抓取网页。在本章中,让我们研究处理捕获数据的各种技术。
介绍
要处理捕获的数据,我们必须以特定格式将数据存储在本地计算机上,例如电子表格 (CSV)、JSON 或有时存储在 MySQL 等数据库中。
CSV 和 JSON 数据处理
首先,从网络爬取后,我们将信息写入 CSV 文件或电子表格。让我们先通过一个简单的例子来理解,在这个例子中,我们将首先像之前一样使用 BeautifulSoup 模块获取信息,然后使用 Python CSV 模块将文本信息写入到 CSV 文件中。
首先,我们需要导入必要的Python库,如下图:
import requests
from bs4 import BeautifulSoup
import csv
在以下代码行中,我们使用该请求通过发出 GET 请求向 URL 发出 GET HTTP 请求:。
r = requests.get('https://authoraditiagarwal.com/')
现在,我们需要创建一个 Soup 对象,如下所示:
soup = BeautifulSoup(r.text, 'lxml')
现在,在下几行代码的帮助下,我们将捕获的数据写入名为 dataprocessing.csv 的 CSV 文件中。
f = csv.writer(open(' dataprocessing.csv ','w'))
f.writerow(['Title'])
f.writerow([soup.title.text])
运行此脚本后,文本信息或网页标题将保存在本地计算机上的上述CSV文件中。
同样,我们可以将采集到的信息保存在一个 JSON 文件中。下面是一个简单易懂的Python脚本,执行与之前的Python脚本相同的信息,但这次使用JSON Python模块将获取的信息保存在JSONfile.txt中。
import requests
from bs4 import BeautifulSoup
import csv
import json
r = requests.get('https://authoraditiagarwal.com/')
soup = BeautifulSoup(r.text, 'lxml')
y = json.dumps(soup.title.text)
with open('JSONFile.txt', 'wt') as outfile:
json.dump(y, outfile)
运行此脚本后,捕获的信息(即页面标题)将保存在本地计算机上的上述文本文件中。
使用 AWS S3 进行数据处理
有时我们可能希望将抓取到的数据保存在本地存储中进行归档。但是如果我们需要*敏*感*词*存储和分析这些数据呢?答案是称为 Amazon S3 或 AWS S3 的云存储服务(简单存储服务)。基本上,AWS S3 是一种对象存储,旨在从任何地方存储和检索任意数量的数据。
我们可以按照以下步骤将数据存储在 AWS S3 中 -
第 1 步 - 首先,我们需要一个 AWS 帐户,该帐户将在存储数据时为我们提供 Python 脚本中使用的密钥。它将创建一个 S3 存储桶,我们可以在其中存储数据。
步骤 2-接下来,我们需要安装 boto3 Python 库来访问 S3 存储桶。它可以在以下命令的帮助下安装 -
pip install boto3
第 3 步 - 接下来,我们可以使用以下 Python 脚本从网页中抓取数据并将其保存到 AWS S3 存储桶中。
首先,我们需要导入用于爬取的Python库,这里我们正在处理请求,boto3将数据保存到S3存储桶中。
import requests
import boto3
现在,我们可以从 URL 中获取数据。
data = requests.get("Enter the URL").text
现在要将数据存储在 S3 存储桶中,我们需要创建一个 S3 客户端,如下所示:
s3 = boto3.client('s3')
bucket_name = "our-content"
下一行代码将创建一个 S3 存储桶,如下所示 -
s3.create_bucket(Bucket = bucket_name, ACL = 'public-read')
s3.put_object(Bucket = bucket_name, Key = '', Body = data, ACL = "public-read")
现在,您可以从您的 AWS 账户检查名为 our-content 的存储桶。
使用 MySQL 进行数据处理
让我们学习如何使用 MySQL 来处理数据。如果您想了解 MySQL,可以单击链接。
借助以下步骤,我们可以捕获数据并将其处理到 MySQL 表中 -
步骤 1-首先,通过使用 MySQL,我们需要创建一个数据库和表,我们要在其中保存捕获的数据。例如,我们使用以下查询来创建一个表 -
CREATE TABLE Scrap_pages (id BIGINT(7) NOT NULL AUTO_INCREMENT,
title VARCHAR(200), content VARCHAR(10000),PRIMARY KEY(id));
步骤 2-接下来,我们需要处理 Unicode。请注意 MySQL 默认不处理 Unicode。我们需要借助以下命令来开启这个功能,这会改变数据库、表和两列的默认字符集——
ALTER DATABASE scrap CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CONVERT TO CHARACTER SET utf8mb4 COLLATE
utf8mb4_unicode_ci;
ALTER TABLE Scrap_pages CHANGE title title VARCHAR(200) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
ALTER TABLE pages CHANGE content content VARCHAR(10000) CHARACTER SET utf8mb4
COLLATE utf8mb4_unicode_ci;
第 3 步 - 现在,将 MySQL 与 Python 集成。为此,我们需要 PyMySQL,可以使用以下命令安装它
pip install PyMySQL
第 4 步-现在,我们之前创建的名为 Scrap 的数据库已准备就绪,可以从 Web 上捕获数据并保存到名为 Scrap_pages 的表中。在我们的示例中,我们将从维基百科中获取数据并将其保存到我们的数据库中。
首先,我们需要导入所需的 Python 模块。
from urllib.request import urlopen
from bs4 import BeautifulSoup
import datetime
import random
import pymysql
import re
现在,建立连接并将其与 Python 集成。
conn = pymysql.connect(host='127.0.0.1',user='root', passwd = None, db = 'mysql',
charset = 'utf8')
cur = conn.cursor()
cur.execute("USE scrap")
random.seed(datetime.datetime.now())
def store(title, content):
cur.execute('INSERT INTO scrap_pages (title, content) VALUES ''("%s","%s")', (title, content))
cur.connection.commit()
现在,连接到维基百科并从中获取数据。
def getLinks(articleUrl):
html = urlopen('http://en.wikipedia.org'+articleUrl)
bs = BeautifulSoup(html, 'html.parser')
title = bs.find('h1').get_text()
content = bs.find('div', {'id':'mw-content-text'}).find('p').get_text()
store(title, content)
return bs.find('div', {'id':'bodyContent'}).findAll('a',href=re.compile('^(/wiki/)((?!:).)*#39;))
links = getLinks('/wiki/Kevin_Bacon')
try:
while len(links) > 0:
newArticle = links[random.randint(0, len(links)-1)].attrs['href']
print(newArticle)
links = getLinks(newArticle)
最后,我们需要关闭游标和连接。
finally:
cur.close()
conn.close()
这将从维基百科采集的数据保存到名为scrap_pages 的表中。如果你熟悉 MySQL 和 Web 抓取,上面的代码就不难理解了。
使用 PostgreSQL 进行数据处理
PostgreSQL 由世界各地的志愿者团队开发,是一种开源关系数据库管理系统 (RDMS)。使用 PostgreSQL 处理捕获数据的过程与 MySQL 类似。将会有两个变化:第一,命令将与 MySQL 不同,第二,这里我们将使用 psycopg2 Python 库来执行它与 Python 的集成。
如果你不熟悉 PostgreSQL,你可以从中学习。并在以下命令的帮助下,我们可以安装 psycopg2 Python 库-
pip install psycopg2