beautifulsoup爬取网页中的表格_用 Python 爬取网页

本文介绍了如何使用Python的BeautifulSoup库来爬取网页中的表格数据,以Tech Track 100强企业列表为例,展示了一个简单的爬虫程序,包括安装库、检查网页结构和提取表格信息的步骤。示例代码可在GitHub上找到。
摘要由CSDN通过智能技术生成

来自公众号:优达学城Udacity

作者:Kerry Parker

编译:欧剃

作为数据科学家的第一个任务,就是做网页爬取。那时候,我对使用代码从网站上获取数据这项技术完全一无所知,它偏偏又是最有逻辑性并且最容易获得的数据来源。在几次尝试之后,网页爬取对我来说就几乎是种本能行为了。如今,它更成为了我几乎每天都要用到的少数几个技术之一。

在今天的文章中,我将会用几个简单的例子,向大家展示如何爬取一个网站——比如从 Fast Track 上获取 2018 年 100 强企业的信息。用脚本将获取信息的过程自动化,不但能节省手动整理的时间,还能将所有企业数据整理在一个结构化的文件里,方便进一步分析查询。

太长不看版:如果你只是想要一个最基本的 Python 爬虫程序的示例代码,本文中所用到的全部代码都放在 GitHub (https://github.com/kaparker/tutorials/blob/master/pythonscraper/websitescrapefasttrack.py),欢迎自取。

准备工作

每一次打算用 Python 搞点什么的时候,你问的第一个问题应该是:“我需要用到什么库”。

网页爬取方面,有好几个不同的库可以用,包括:

  • Beautiful Soup

  • Requests

  • Scrapy

  • Selenium

今天我们打算用 Beautiful Soup 库。你只需要用 pip(Python包管理工具)就能很方便地将它装到电脑上:

2b4745ea17380028e206b534fac0357d.png

安装完毕之后,我们就可以开始啦!

检查网页

为了明确要抓取网页中的什么元素,你需要先检查一下网页的结构。

以 Tech Track 100强企业(https://link.zhihu.com/?target=http%3A//www.fasttrack.co.uk/league-tables/tech-track-100/league-table/) 这个页面为例,你在表格上点右键,选择“检查”。在弹出的“开发者工具”中,我们就能看到页面中的每个元素,以及其中包含的内容。

da2aca353e5348b06d436eaafce1400f.png
2af1a24f2bef1bd2a2f36cc693136432.png

右键点击你想要查看的网页元素,选择“检查”,就能看到具体的 HTML 元素内容

既然数据都保存在表格里,那么只需要简单的几行代码就能直接获取到完整信息。如果你希望自己练习爬网页内容,这就是一个挺不错的范例。但请记住,实际情况往往不会这么简单。

这个例子里,所有的100个结果都包含在同一个页面中,还被  标签分隔成行。但实际抓取过程中,许多数据往往分布在多个不同的页面上,你需要调整每页显示的结果总数,或者遍历所有的页面,才能抓取到完整的数据。

在表格页面上,你可以看到一个包含了所有100条数据的表格,右键点击它,选择“检查”,你就能很容易地看到这个 HTML 表格的结构。包含内容的表格本体是在这样的标签里:

c01abe9f8401c5982d34a8b4dc59b704.png

每一行都是在一个  标签里,也就是我们不需要太复杂的代码,只需要一个循环,就能读取到所有的表格数据,并保存到文件里。

附注:你还可以通过检查当前页面是否发送了 HTTP GET 请求,并获取这个请求的返回值,来获取显示在页面上的信息。因为 HTTP GET 请求经常能返回已经结构化的数据,比如 JSON 或者 XML 格式的数据,方便后续处理。你可以在开发者工具里点击 Network 分类(有必要的话可以仅查看其中的 XHR 标签的内容)。这时你可以刷新一下页面,于是所有在页面上载入的请求和返回的内容都会在 Network 中列出。此外,你还可以用某种 REST 客户端(比如 Insomnia)来发起请求,并输出返回值。
6c16c3bbcc3dfd6cfedc82c4e8b95e31.png
刷新页面后,Network 标签页的内容更新了

用 Beautiful Soup 库处理网页的 HTML 内容

在熟悉了网页的结构,了解了需要抓取的内容之后,我们终于要拿起代码开工啦~

首先要做的是导入代码中需要用到的各种模块。上面我们已经提到过 BeautifulSoup,这个模块可以帮我们处理 HTML 结构。接下来要导入的模块还有 urllib,它负责连接到目标地址,并获取网页内容。最后,我们需要能把数据写入 CSV 文件,保存在本地硬盘上的功能,所以我们要导入 csv库。当然这不是唯一的选择,如果你想要把数据保存成 json 文件,那相应的就需要导入 json 库。

3eed8fcd4fb7ebcd9d4d1a4598adec2b.png

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Python爬取网页表格,你可以使用requests库发送请求获取网页内容,然后使用BeautifulSoup库解析HTML内容。以下是一个示例代码,可以爬取网页表格数据: ```python import requests from bs4 import BeautifulSoup url = "https://zh.wikipedia.org/zh-cn/ISO_3166-1" response = requests.get(url) html_content = response.text soup = BeautifulSoup(html_content, 'html.parser') table = soup.find('table') rows = table.find_all('tr') data = \[\] for row in rows: cells = row.find_all('td') if len(cells) > 1: row_data = \[cell.text.strip() for cell in cells\] data.append({ "en": row_data\[0\], "short": row_data\[1\], "shortLen3": row_data\[2\], "numberCode": row_data\[3\], "iso": row_data\[4\], "name": row_data\[5\], "isTndependent": row_data\[6\], }) print(data) ``` 这段代码会发送请求并获取网页内容,然后使用BeautifulSoup库解析HTML内容。接着,它会查找表格元素,并遍历每一行,将每行的单元格文本添到一个列表。最后,它会输出这个列表,其包含了表格数据。你可以根据需要对代码进行修改和调整。\[1\] #### 引用[.reference_title] - *1* *3* [用python获取一个网页里面表格数据](https://blog.csdn.net/Candy_mi/article/details/129931456)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Python爬取多网页表格数据(非table)](https://blog.csdn.net/m0_62101908/article/details/126050133)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值