使用 Python 进行网页抓取

作者 : 慕源网 本文共2035个字,预计阅读时间需要6分钟 发布时间: 2022-02-9 共202人阅读

介绍

数据是任何组织最宝贵的资产。它可以帮助他们了解运营活动、市场需求以及互联网上竞争对手的数据,从而帮助他们规划未来的前景。我们将学习互联网上最苛刻的概念之一,它指导许多机构将其业务提升到一个新的水平。这是使用最流行的编程语言之一 Python 从被称为“Web Scraping”的网页/网站收集数据的方法。

定义

  • 从网页/网站中提取 HTML 数据的过程。
  • 将 HTML 非结构化数据转换为将数据结构化为 excel 或数据集。
  • 让我们通过提取www.c-sharpcorner.com网站主页上可用的网络链接名称的示例来研究这个概念。

步骤1

从网页抓取开始,我们需要两个库:bs4 中的 BeautifulSoup 和 urllib 中的 request。导入这两个 Python 包。

#import packages(libraries)  
from bs4 import BeautifulSoup  
import urllib.request 

第2步

选择 URL 以提取其 HTML 元素。
#target URL   
url = "https://www.c-sharpcorner.com" 

第 3 步

我们可以通过请求中的 urlopen() 函数访问该网页上的内容并将 HTML 保存在“myUrl”中。

#use request to open URL  
myUrl = urllib.request.urlopen(url)  

步骤4

使用 BeautifulSoup 的各种内置函数,创建一个 BeautifulSoup 对象以进一步提取网页元素数据。
#soup 是 BeautifulSoup 的一个对象,它允许我们使用它的所有内置函数来提取网页元素数据  
soup=BeautifulSoup(myUrl, 'html.parser')   
  
# 页面标题  
print(soup.title)  
  
# 获取属性:  
print(soup.title.name)  
  
# 获取值:  
print(soup.title.string)  
  
# 开始导航:  
print(soup.title.parent.name)  
  
# 获取特定值:  
print(soup.p)  
  
# BeautifulSoup 中的 prettify() 函数可以让我们查看标签是如何嵌套在文档中的  
print(soup.prettify())  
第 5 步
找到并抓取服务。使用 soup.find_all() 函数,从网页的整个或特定部分中提取特定的 HTML 元素标记。
我们应该在这个网页上找到 HTML 服务,提取它们并存储它们。对于网页中的每个元素,它们始终具有唯一的 HTML“ID”或“类”。要检查他们的 ID 或班级,我们需要检查网页上的元素。
# soup.find_all('div') function will extract all the div tags on the given url  
div_list= soup.find_all('div')  
  
# this will be all the div tag as a single element of review[] list  
print(div_list)  
第 6 步

在检查网页以提取 www.c-sharpcorner.com 网站上的所有服务名称时,我们将类值为“headerMenu”的 ul 标记定位为父节点。

为了提取所有子节点,我们的目标是提取 www.c-sharpcorner.com 网站上的所有 web 链接名称,我们将 li 标签定位为目标节点。
# weblinks[] a list to store all the weblinks name on https://www.c-sharpcorner.com  
weblinks=[]  
  
# the outermost loop will help to extract all HTML element of div tag with class value as 'row service-ro no-margin'  
for i in soup.find_all('ul',{'class':'headerMenu'}):  
    # the innnermost loop will help to extracdt all the HTML element of div tag with class value as col-lg-4 col-md-6 single-servic  
    for j in i.find_all('li'):  
        # to extract h4 HTML element in each j  
        per_service = j.find('a')  
        # this will print the service name   
        print(per_service.get_text())  
        # to append the service name in services list  
        weblinks.append(per_service.get_text())  

上述代码的输出:

TECHNOLOGIES
ANSWERS
LEARN
NEWS
BLOGS
VIDEOS
INTERVIEW
PREP
BOOKS
EVENTS
CAREER
MEMBERS
JOBS

概括

本文介绍了如何从任何给定 URL 中提取 HTML 元素数据的基础知识。

下载 源代码

 


慕源网 » 使用 Python 进行网页抓取

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录