推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
frmongo
V2EX  ›  Python

Python 爬虫问题咨询

  •  
  •   frmongo · Jul 19, 2018 · 3605 views
    This topic created in 3036 days ago, the information mentioned may be changed or developed.

    小白虚心求教一个爬虫问题,对于一个已经下载好的 html,如果在它的内容里,一个 class 的名字里包含了空格,CSS 选择器怎么书写呢? 比如一个 html 里是这样的

    <div class="aaa">
        <div class="bbb">
            <ul class="tab ccc">
                <li>
                "Sting1"
                </li>
            </ul>
            <ul class="tab ddd">
            "string2"
            </ul>
            ...
        </div>
    <div>
    

    如果我想获得 tab ccc 下 li 包括的 String1,这样写是不行的:

    d = tree.cssselect('div.aaa > div.bbb > ul.tab ccc > li')
    print d.text_content()
    

    那我该怎么写 CSS 选择器呢?

    16 replies  •  2018-07-20 11:39:09 +08:00
    14night
    14night
    Jul 19, 2018
    1
    d = tree.cssselect('div.aaa > div.bbb > ul.tab.ccc > li')
    print d.text_content()

    试试呢?
    pcdRob
    pcdRob
    Jul 19, 2018
    2
    body > div > div.bbb > ul.tab.ccc > li
    Phant0m
    Phant0m
    Jul 19, 2018
    3
    chrome 开发者 审查元素, 右键复制 可以选 select 和 xpath
    alen
    alen
    Jul 19, 2018❤️1
    4
    何不用 bs4 呢!
    xanthu
    xanthu
    Jul 19, 2018 via Android
    5
    建议用 xpath...
    xanthu
    xanthu
    Jul 19, 2018 via Android
    6
    chrome 有个 ChroPath 的插件,点下元素,css 和 xpath 选择器就出来了
    lhx2008
    lhx2008
    Jul 19, 2018 via Android
    7
    用 pyqury,直接 tree(".aaa .bbb .ccc.tab li").text()
    frmongo
    frmongo
    OP
    Jul 19, 2018
    8
    @xanthu 嗯,我研究研究,我在尝试解析一个很复杂的 html, 发现我的 selector 写的没问题,也找不到元素,奇了怪了,chrome 复制的 selector 也不好使
    MES
    MES
    Jul 19, 2018
    9
    @frmongo 包含空格的,写一个就行,看你用哪个方便一点了。
    frmongo
    frmongo
    OP
    Jul 19, 2018
    10
    走了一遍程序还不行,这个链接里的 http://detail.zol.com.cn/1225/1224202/param.shtml 里的字符串 Android 8.1
    死活找不到
    pp = 'body > div:nth-child(10) > div.content > div:nth-child(3) > div.detailed-parameters > table:nth-child(2) > tbody > tr:nth-child(4) > td > span'
    tanglijun
    tanglijun
    Jul 19, 2018
    11
    d = tree.xpath("//div[@class='aaa']/div[@class='tab ccc']/li/text()")
    for i in d:
    print(d)

    用的 xpath,试试行不!
    frmongo
    frmongo
    OP
    Jul 19, 2018
    12
    解决了,谢谢各位,我作为一个小白,也差了一些资料,现在能抓到了
    hatsuyuki
    hatsuyuki
    Jul 19, 2018
    13
    css 选择器直接写 .class1.class2,class 以点开头选择,两个 class 直接写一起,不要加空格
    forget166
    forget166
    Jul 19, 2018
    14
    soup.find_all('ul',{'class':'tab ccc'}).get_text()
    congeec
    congeec
    Jul 20, 2018
    15
    div.aaa.bbb
    frmongo
    frmongo
    OP
    Jul 20, 2018
    16
    多谢各位,赞
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3210 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 05:33 · PVG 13:33 · LAX 21:33 · JFK 00:33
    ♥ Do have faith in what you're doing.