Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用python抓取获取<li>内部</br>标记内的数据

如何使用python抓取获取<li>内部</br>标记内的数据
EN

Stack Overflow用户
提问于 2017-09-03 20:34:29
回答 1查看 826关注 0票数 0
代码语言:javascript
运行
AI代码解释
复制
<div class="row features_2 "><br />
        <ul>

                    <li><b>Área privada:</b><br />
                    70,00</li>

            <!--area-->

                    <li><b>Área Const.:</b><br />
                    70,00</li>

            <!--precio metro cuadrado-->

                <li><b>Precio m²:</b><br />
                3.142.857/</li>

            <!--Valor noche si es alquiler vacacional-->

            <!--precio de administracion -->

                    <li><b>Admón:</b><br />
                    $150,000</li>

            <!--Estrato si aplica-->

                <li><b>Estrato:</b> <br />
                3

            <!--Estado si aplica-->

                <li><b>Estado:</b> <br />
                    Excelente
                </li>

            <!--edad si aplica-->

                <li><b>Antigüedad:</b> <br />
                1 a 8 años</li>

            <!--piso #-->

            <!--Clima-->

            <!--tipo de apartamento si aplica-->

            <!--para parqueaderos-->
            <!--caracteristicas parqueadero-->

            <!--Sector (siempre va)-->
            <li><b>Sector:</b> <br />

                <a href="#pnlMap" style="font-weight: bold;">Ver Mapa</a>

            </li>  


        </ul>

从上面我想得到标签中的值,但是我在将值保存到单独的列表时遇到了麻烦。

我想根据自身内部的数据来保存这些值。

例如,如果标签包含‘αrea privada:',那么我必须将值'70,00 m²’保存到list name area中

否则,如果标签包含'Precio m²:‘,那么我必须将值3.142.857/m²保存到名为Precio的列表中

我尝试了下面的代码来获取元素,但不确定如何根据上面的条件编写条件将数据保存到列表中。

代码语言:javascript
运行
AI代码解释
复制
import requests
from bs4 import BeautifulSoup
page = requests.get('https://www.fincaraiz.com.co/oceana-52/barranquilla/proyecto-nuevo-det-1041165.aspx')
soup = BeautifulSoup(page.content, 'lxml')
box_3 = soup.find('div' ,'row features_2 ')
box_3_1  = box_3.findAll('li')
for i in box_3_1:
    print (i)

否则,是否有其他选项可以将上述标记中的数据保存到相应的列表中。

EN

回答 1

Stack Overflow用户

发布于 2017-09-03 21:22:46

使用<br>next_sibling属性

代码语言:javascript
运行
AI代码解释
复制
for li in box_3_1:
    print(str(li.br.next_sibling).strip())

输出:

代码语言:javascript
运行
AI代码解释
复制
71,00 a 185,0078,00 a 207,005
Cálido

OP想要在不同的列表中存储“αrea”和"Precio“数据。假设这两个字符串永远不会出现在同一个<li>标题中,这里有一个完整的解决方案:

代码语言:javascript
运行
AI代码解释
复制
area = []
precio = []
for li in box_3_1:
    heading_words = li.b.text.split()
    target_content = str(li.br.next_sibling).strip()
    if "Área" in heading_words:
        area.append(target_content)
    elif "Precio" in heading_words:
        precio.append(target_content)

对于更一般的解决方案,可以考虑创建一个关键标题术语列表,然后将所有输出存储在一个字典中。例如:

代码语言:javascript
运行
AI代码解释
复制
import re

key_terms = ["Área", "Precio", "Estrato"]
data = {k:[] for k in key_terms}

for li in box_3_1:
    heading = li.b.text
    target_content = str(li.br.next_sibling).strip()
    for term in key_terms:
        # Headers like "Estrato:" do not match on split() due to end ":"; use re instead.
        if re.search(term, heading):
            data[term].append(target_content)          
data
{'Estrato': ['5'],
 'Precio': [],
 'Área': ['71,00 a 185,00 m²', '78,00 a 207,00 m²']}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46027604

复制
相关文章
对照return讲解yield,这个很重要
yield:返回结果后,函数不结束,yield返回值后暂停,再次调用时,在暂停的地方继续执行;可执行多次,直到函数结束
计算机与AI
2020/12/14
4920
对照return讲解yield,这个很重要
python中的yield和return
yield和return的区别与python中的generator和iterables相关,所以要了解其不同,首先要明白产生器和迭代器。
Tim在路上
2020/08/05
9720
Django—视图
视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者。
py3study
2020/01/16
4.5K0
Django—视图
【说站】python return和yield的执行比较
2、但yield并非如此,在此次迭代返回后,yield函数将从上次迭代遇到的yield后面的代码(下一行)开始执行。
很酷的站长
2022/11/23
2790
【说站】python return和yield的执行比较
【说站】python return和yield有什么不同
python return和yield有什么不同 不同点 1、return函数中只存在一个return结束函数。 并且给函数的执行者返回值。 2、只要在函数中有yield,那么它就是生成器函数而不是函数。 3、生成器函数中可以存在多个yield,yield不会结束生成器函数。 一个yield对应一个next。 实例 def eat():     for i in range(1,10):         yield '包子'+str(i)   e = eat() for i in range(5):  
很酷的站长
2022/11/24
1.1K0
【说站】python return和yield有什么不同
类视图 vs. 函数视图
基于类的视图(CBV)和基于函数的视图(FBV)到底有什么区别? 有什么优缺点? 本篇将会去探讨。 在阅读本篇之前,请记住一点「基于类的视图不会替代基于函数的视图」.
用户1416054
2018/12/26
2.5K0
Django 视图函数
定义视图 本质就是一个函数 视图的参数 一个HttpRequest实例 通过正则表达式组获取的位置参数 通过正则表达式组获得的关键字参数 在应用目录下默认有views.py文件,一般视图都定义在这个文件中 如果处理功能过多,可以将函数定义到不同的py文件中 新建views1.py #coding:utf-8 from django.http import HttpResponse def index(request): return HttpResponse("你好") 在urls.py中
Lansonli
2021/10/09
5800
Django 视图层
PyCharm可以使用virtualenv中的功能来创建虚拟环境。PyCharm紧密集成了virtualenv,所以只需要在setting中配置即可创建虚拟环境。而且PyCharm捆绑了virtualenv,我们不需要单独安装,一般创建过程如下:
py3study
2020/01/19
1.7K0
C#之Yield Return语法的作用和好处
还是和以前一样,我先上代码,请大家先拿到我的代码或者你跟着敲,运行看效果,以及理解每行带代码的作用。 我们要带着为什么要用Yield这个关键字,不用可以吗这个目的去学知识,我相信会更加的有意思。
郑子铭
2023/08/29
3080
C#之Yield Return语法的作用和好处
Django 2.1.7 视图
上一篇中讲诉了Django关于模型的设计以及数据操作,本篇章就来继续讲解关于模板的内容。
Devops海洋的渔夫
2019/06/11
7440
Django 2.1.7 视图
Django 教程 --- Django中的视图
Django视图是Django M V T结构的重要参与者之一。视图是用户界面,即您呈现网站时在浏览器中看到的内容。它由HTML / CSS / Javascript和Jinja文件表示。根据Django文档,视图函数是一个Python函数,它接受Web请求并返回Web响应。此响应可以是网页的HTML内容,重定向,404错误,XML文档或图像(Web浏览器可以显示的任何内容)
公众号---人生代码
2020/05/26
3K0
Django 教程 --- Django中的视图
Django - - - -视图层之视图函数(views)
视图层之视图函数(views) 一个视图函数,简称视图,是一个简单的Python 函数,它接受Web请求并且返回Web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误,一个XML文档,或者一张图片. . . 是任何东西都可以。无论视图本身包含什么逻辑,都要返回响应。代码写在哪里也无所谓,只要它在你的Python目录下面。除此之外没有更多的要求了——可以说“没有什么神奇的地方”。为了将代码放在某处,约定是将视图放置在项目或应用程序目录中的名为views.py的文件中。 视图函数:     一
用户1214487
2018/01/24
1.6K0
Django - - - -视图层之视图函数(views)
Django之视图层
  一个视图函数,简称视图,是一个简单的python函数,接收web请求并返回web响应。响应可以是一张网页的HTML内容,一个重定向,一个404错误等。在函数中必须写一个request的参数,然后必须要有返回值,中间的逻辑随便,整个函数写在哪里也无所谓,只要python目录下就行,但我们默认规定,视图函数一般都写在每个应用下面views.py文件里。
py3study
2020/01/19
1.7K0
Django 2.1.7 类视图
Django 2.1.7 创建应用模板 Django 2.1.7 配置公共静态文件、公共模板路径 Django 2.1.7 模板语言 - 变量、标签、过滤器、自定义过滤器、模板注释 Django 2.1.7 模板继承 Django 2.1.7 模板 - HTML转义 Django 2.1.7 模板 - CSRF 跨站请求伪造 Django 2.1.7 模板 - 图片验证码的实现 Django 2.1.7 模板 - 动态URL 反向解析 Django 2.1.7 模板 - 动态配置静态文件路径
Devops海洋的渔夫
2019/07/15
6950
Django 2.1.7 类视图
django 入门:通用视图类重构视图
博客:https://www.jianshu.com/p/8cdf099e974f
陈宇明
2020/12/15
8940
django 入门:通用视图类重构视图
Django 之视图篇
<font color="red">欢迎阅读本专栏其他文章</font> Django 之路由篇 Django 之 Models(Models 模型 & 数据表关系) Django 之模板篇 views 视图 视图概述 视图即视图函数,接收web请求并返回web响应的事务处理函数 响应指符合http协议要求的任何内容,包括json,string,html等 本章忽略事务处理,重点在如何处理返回结果上 其他简单视图 django.http 给我们提供了很多和HttpResponse类似的简单视图,通过查看dj
ruochen
2021/05/12
1.1K0
Django 之视图篇
Django学习视图(6)
我们在浏览器请求后,Django 匹配URL 进行路由,匹配到后调用对应的视图,生成HTML代码,返回给浏览器。
萌海无涯
2019/09/03
7800
Django学习视图(6)
Python Django 编程 | 连载 03 - Django 视图
应用中的 views.py 是 Django MTV 架构中的 V,主要负责处理用户请求和生成相应的响应内容返回到前端,然后在 HTML 或者其他类型文档中渲染、显示。
RiemannHypothesis
2022/11/05
6660
Python Django 编程 | 连载 03 - Django 视图
点击加载更多

相似问题

推送已提交的已修改/重新基址的提交

10

本地分支上的推送代码在重新基址后丢失

10

如何在重新建立基址后压缩提交

10

Git拒绝在重新排序提交后推送。

11

Git在修改后的提交中重新建立基址失败

33
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文