吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1832|回复: 15
收起左侧

[Python 转载] python css 选择器的一个问题

[复制链接]
wanpojie 发表于 2021-9-8 00:22
本帖最后由 wanpojie 于 2021-9-8 00:58 编辑

http://www.zszj.net/articles/4217.html



像是上图这种前后没有标签页的,要怎么用css选择器来拿到这一串汉字,或者哪里有比较小白的教程也可以,网上找了不少 基本上就是.class,#id


xpath可以挑出来,但是我还是想学学css选择器


通过title标签,得到了
【<title>
      舟山造价协会 《关于印发《工程建设领域农民工工资专用账户管理暂行办法》的通知》
    </title>】
但是我只想要中间的部分,正则表达式也不好整
image.png
image.png

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| wanpojie 发表于 2021-9-8 00:47
                    </li><li data-name="articles">
                        <a href="/articles/3993.html" class="pull-left" data-name="link">
                            <i class="fa fa-caret-right faon2"></i>
                            住建部正式发布《工程总承包管理办法》,2020年3月1日起施行
                        </a><span class="pull-right" data-name="addtime">2020-01-02</span>
                    </li><li data-name="articles">
                        <a href="/articles/4002.html" class="pull-left" data-name="link">
                            <i class="fa fa-caret-right faon2"></i>
                            关于进一步加强房屋建筑和市政基础设施工程招标投标监管的指导意见
                        </a><span class="pull-right" data-name="addtime">2020-01-01</span>
                    </li>
                </ul>

我尝试在主页面标题里面找  title = selector.css('.fa fa-caret-right faon2').get()    或者是getall  都不行  
暮光微暖 发表于 2021-9-8 09:05
兄弟 我喜欢用pyquery因为我jquery写的熟练点, 凑合看

from pyquery import PyQuery as pq

html_el = '''
</li>
    <li data-name="articles">
        <a href="/articles/3993.html" class="pull-left" data-name="link">
            <i class="fa fa-caret-right faon2"></i>
            住建部正式发布《工程总承包管理办法》,2020年3月1日起施行
        </a><span class="pull-right" data-name="addtime">2020-01-02</span>
    </li>
    <li data-name="articles">
        <a href="/articles/4002.html" class="pull-left" data-name="link">
            <i class="fa fa-caret-right faon2"></i>
            关于进一步加强房屋建筑和市政基础设施工程招标投标监管的指导意见
        </a><span class="pull-right" data-name="addtime">2020-01-01</span>
    </li>
</ul>
'''

# 获取html内容
doc = pq(html_el)
# 获取元素列表
row_list = doc("[data-name='articles']")
# 遍历获取内容
for row_item in row_list.items():
    row_title = row_item(".pull-left").text()
    print(row_title)


输出
(venv) PS E:\project\pro_demo\scrapy> & e:/project/pro_demo/scrapy/venv/Scripts/python.exe e:/project/pro_demo/scrapy/re_test.py
住建部正式发布《工程总承包管理办法》,2020年3月1日起施行
关于进一步加强房屋建筑和市政基础设施工程招标投标监管的指导意见
Takitooru 发表于 2021-9-8 00:34
你红框标记的字符串 ,就是被div包裹着,其中css就是class=r_title_h4
你直接获取css元素r_title_h4就行了
神枪泡泡丶 发表于 2021-9-8 01:25
通过css按class去选择的话是能正常的.. 建议放下完整代码

document.getElementsByClassName('r_title h4').item(0).textContent
"关于取消工程造价咨询企业资质审批加强事中事后监管的通知&#8629;"

Takitooru 发表于 2021-9-8 01:56

你要获取的是,被哪个标签包裹的字符串,不是获取字符串前面的元素
应该获取<a >标签里的class="pull-left"元素,因为字符串是被a标签里
<a  ***** class="pull-left">住建部正式发布《工程总承包管理办法》,2020年3月1日起施行</a>
字符串被哪个标签包裹,就获取该父级元素。
假设a标签中没有class,就继续往上查找父级元素
<li class="pull-left">
<a >住建部正式发布《工程总承包管理办法》,2020年3月1日起施行</a>
</li>
这时a标签没有class了,但是上级li标签有class,就获取li标签的class即可
狐白本白 发表于 2021-9-8 08:56
Text()  就可以拿到标签内页面展示的内容
暮光微暖 发表于 2021-9-8 09:01

你好你这选择器写错了, 通一个class里的类是不带空格且带. 应该是(".fa.fa-caret-right.faon2"), 最重要的你取错元素了,取文字的话应该是('li a.pull-left')试一试
WayneXiong 发表于 2021-9-8 09:04

.fa fa-caret-right faon2,明显是一个i标签,获取a就好。
这些文章一般都要找规律,不一定每篇文章主体内容里面标签一样,可以找到主要标签位置,先切片,排除干扰,然后再取内容,要是再不好取,就开终极大招:取出全部内容去掉页面所有标签部分。
 楼主| wanpojie 发表于 2021-9-8 09:09
暮光微暖 发表于 2021-9-8 09:05
兄弟 我喜欢用pyquery因为我jquery写的熟练点, 凑合看

from pyquery import PyQuery as pq

先感谢老哥  我在网上看了不少  有css,xpath,bs4,还有pq,脑子浆糊了,好像每个都知道一点儿  但是操作起来又每个都不确定。。。。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 13:23

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表