【抓取入门】用Python获取站点上的表数据

您好,很高兴见到您。
我是系统解决方案部门的河合,最近我特别迷上了 Kirby Discovery。

天气已经很热了,但春天真的来了!我上班路上(很久以前)就看到有人穿着像新员工一样的衣服了。
这次,我会写一篇关于Python网页抓取的文章,或许对新员工的工作有所帮助。

什么是刮削?

近年来,数据分析日益受到关注,而网络爬虫是其基本技术之一,主要用于从网站获取目标数据。“
scrape”一词最初的意思是“收集”,该术语似乎由此而来。

在本文中,我们将使用编程语言 Python 自动检索页面中的表格信息。

准备

如果未安装 Python,从
下载并安装适用于您操作系统的软件包 https://www.python.org/downloads/

安装我们这次要使用的库“ BeautifulSoup4 ”和“ html.parser

本文假设您在 Windows 环境下操作,因此请按 [CTRL] + [R] 打开命令提示符,输入 [cmd],然后执行以下命令。安装程序将开始运行。

使用 pip 安装 bs4 html.parser

这次,我想尝试从以下 Microsoft 页面自动获取 Office 365 中使用的域名和 IP 地址等信息,然后将其写入 CSV 文件(手动获取这些信息非常麻烦)。

“Office 365 URL 和 IP 地址范围” > “Microsoft 365 通用和 Office Online”
https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide

运行环境及完整代码

使用的操作系统:Microsoft Windows 10 Pro
Python版本:3.10

from bs4 import BeautifulSoup from html.parser import HTMLParser import csv from urllib.request import urlopen headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"} html = urlopen("https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide") bsObj = BeautifulSoup(html, "html.parser") table = bsObj.findAll("table")[4] rows = table.findAll("tr") with open(r"C:\Users\python\Desktop\python\2022\microsoft.csv", "w", encoding="cp932", newline="") as file: writer = csv.writer(file) for row in rows: csvRow = [] for cell in row.findAll(["td", "th"]): csvRow.append(cell.get_text()) writer.writerow(csvRow)

代码解释

from bs4 import BeautifulSoup from html.parser import HTMLParser import csv from urllib.request import urlopen

导入各个库。

headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:61.0) Gecko/20100101 Firefox/61.0"} html = urlopen("https://docs.microsoft.com/ja-jp/microsoft-365/enterprise/urls-and-ip-address-ranges?view=o365-worldwide") bsObj = BeautifulSoup(html, "html.parser")

→ 添加用户代理信息(本例中我们将使用 Firefox)。
指定要使用 urlopen 打开的页面,并在此处声明,以便 BeautifulSoup 可以读取它。

table = bsObj.findAll("table")[4] rows = table.findAll("tr")

→ 根据 HTML 结构(使用各浏览器的开发者工具),将 [4] 指定为第四个表格。此外,使用 findAll 函数查找“tr”标签。

with open(r"C:\Users\python\Desktop\python\2022\microsoft.csv", "w", encoding="cp932", newline="") as file: writer = csv.writer(file) for row in rows: csvRow = [] for cell in row.findAll(["td", "th"]): csvRow.append(cell.get_text()) writer.writerow(csvRow)

→ 指定字符代码等,以及所需的路径和文件名(如果文件不存在,则会在指定的路径中创建该文件)。

您可以使用“w”写入数据,并使用“newline=""”将检索到的信息写入文件,即每列另起一行。
在上述列指定的行(tr 标签)中搜索 td 和 th,使用循环获取这些列的值,并将它们写入 CSV 文件。

输出结果

这就是我得到的结果。这次我只得到了一些信息,但信息越多,效率就越高。

如果我还有机会,我想写一篇对别人有用的文章。

如果您觉得这篇文章有帮助,请点赞!
8
加载中...
8 票,平均:1.00 / 18
11,105
X Facebook 哈特纳书签 口袋

写这篇文章的人

关于作者

川健

属于系统解决方案部的
好奇的 Poke○n