首页 > 编程问答 >使用 python 抓取网页

使用 python 抓取网页

时间:2024-08-05 14:59:13浏览次数:10  
标签:python web-scraping beautifulsoup

我有以下网页

</div><a href="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section" rel="nofollow" class="star-rating-container js-product-url" data-zone="reviews"><div class="star-rating star-rating-read rated-4.02  star-rating-sm  ">
        <div class="star-rating-inner " style="width: 100%"></div>
    </div><div class="star-rating-text ">

我想从此产品中提取评级。 对于此产品,评级在此处定义。

<div class="star-rating star-rating-read rated-4.02  star-rating-sm  ">

并且我无法提取 4.02。

我的代码如下所示:

rating = container.find_all(class_="star-rating star-rating-read rated")[0].text

我知道上面的代码不行,我能够提取价格和产品名称,但我无法提取评级:(


问题在于你尝试使用 .text 从一个没有直接文本内容的标签中提取文本。 rated-4.02 实际上是 class 属性的一部分,而不是标签内的文本。

这里是如何提取评分的修正后的代码:

from bs4 import BeautifulSoup

html = """
</div><a href="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section" rel="nofollow" class="star-rating-container js-product-url" data-zone="reviews"><div class="star-rating star-rating-read rated-4.02  star-rating-sm  ">
        <div class="star-rating-inner " style="width: 100%"></div>
    </div><div class="star-rating-text ">
"""

soup = BeautifulSoup(html, 'html.parser')

# 使用 find() 方法找到包含评分的 div 元素
rating_div = soup.find('div', class_='star-rating')

# 从 class 属性中提取评分
rating = rating_div['class']

# 找到包含 "rated-" 的类并从中提取评分
for c in rating:
  if 'rated-' in c:
    rating = c.split('-')[1]
    break

print(rating)  # 输出: 4.02

这个代码会:

  1. 使用 BeautifulSoup 解析 HTML。
  2. 使用 find() 方法找到包含评分的 div 元素。
  3. 获取 div 元素的所有 class 属性。
  4. 迭代所有 class 属性,找到包含 "rated-" 的那个。
  5. 使用字符串分割从找到的 class 属性中提取评分。

这样你就可以成功地从 HTML 中提取评分 4.02 了。

标签:python,web-scraping,beautifulsoup
From: 67545722

相关文章

  • Python:需要有关类方法的帮助
    我有一个类“Duck”和“Dog”,如下所示:classDuck:defquack(self):print("quack")classDog:defbark(self):print("Ijustbark")以两种方式定义了另一个类并启动:case:1classItQuacks:def__init__(self,animal):......
  • 查找分层股东关系:在 python 中重构嵌套 if
    我想找到公司之间的股东关系。在下面的示例中,“人员1”直接拥有“公司1”50%的股份,那么需要检查“公司1”是否也拥有其他公司的股份。“公司1”拥有“公司2”50%的股份,“公司3”拥有20%的股份。这意味着“人员1”间接拥有“公司2”和“公司3”的部分股份。此......
  • 解决Python的pip问题:WARNING: Retrying (Retry(total=1, connect=None, read=None, re
    相关:pip安装第三方库报错Retrying(Retry(total=1,connect=None,read=None,redirect=None,status=None))国内镜像源下载常用国内源:清华:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.u......
  • Python,volcengine-python-sdk,安装失败,提示which is required to install pyproject.to
    问题描述:我是安装截止20240804发布的最新版本,volcengine-python-sdk-1.0.94.tar.gz报错一报错最后提示:whichisrequiredtoinstallpyproject.toml-basedprojects...note:Thiserrororiginatesfromasubprocess,andislikelynotaproblemwithpip.ERROR:Fai......
  • python_wholeweek3
    目录子函数的使用函数的定义嵌套的使用全局定义和局部定义子函数的使用函数的定义##############函数的三种定义方式##比较两个数大小,max是内置关键字,##第一种定义方式,无参函数#defself_max():#x,y=10,20##ifx>y:#print(x)#el......
  • Python实现简单的情感分析应用
    Python实现简单的情感分析应用情感的力量:走进情感分析的世界什么是情感分析:从日常对话到大数据分析情感分析的应用场景:从社交媒体到客户服务为何Python成为情感分析的最佳拍档准备工作:Python环境与必备库Python安装指南:快速搭建开发环境必不可少的库:nltk与TextBlob的简......
  • Python中的Web开发与API设计
    Python中的Web开发与API设计一、开篇:启航PythonWeb开发之旅1.1Python:不仅仅是脚本语言,更是Web开发的明星1.2Web开发的魔法森林:从静态到动态的转变二、基础篇:PythonWeb开发的基石2.1HTTP协议:互联网通信的通用语言2.2Flask框架:轻装上阵的小巧之选2.3Django框架:全......
  • Python实现简单的模型调优技术
    Python实现简单的模型调优技术一、开篇:模型调优的魅力所在1.1模型调优:不只是参数游戏1.2为什么好的模型也需要调优二、基础篇:理解模型调参的必要性2.1模型评估指标:选择合适的尺子2.2常见调参方法:从手动到自动化2.3验证集的重要性:不要让模型裸奔三、实战篇:动手......
  • SpringBoot-书店信息管理系统+93494(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    基于springboot书店信息管理系统摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户......
  • 《最新出炉》系列初窥篇-Python+Playwright自动化测试-63 - Canvas和SVG元素定位
    1.简介今天宏哥分享的在实际测试工作中很少遇到,比较生僻,如果突然遇到我们可能会脑大、懵逼,一时之间不知道怎么办?所以宏哥这里提供一种思路供大家学习和参考。2.SVG简介svg也是html5新增的一个标签,它跟canvas很相似。都可以实现绘图、动画。但是svg绘制出来的都是矢量图,不像canv......