zoukankan      html  css  js  c++  java
  • 爬虫笔记:PyQuery模块(七)

    PyQuery模块也是一个解析html的一个模块,它和Beautiful Soup用起来差不多,它是jquery实现的,和jquery语法差不多,会用jquery的人用起来就比较方便了。

    Pyquery需要依赖lxml模块,不装的话,使用会报错。

    安装

    pip install lxml
    pip install pyquery
    

      解析html的3种方式

    from pyquery import PyQuery
    html = """
    <html><head><title>Baidu</title></head>
    <body>
    <div>
    <p class="content">搜索
    <a href="http://www.baidu.com" class="link" id="link1"><!--首页--></a>,
    <a href="http://www.baidu.com/page/3.html" class="link" id="link2">搜索1</a> and
    <a href="http://www.baidu.com/page/47.html" class="link" id="link3">搜索2</a>;
    请点击上面的链接.</p>
    <p class="content">.这是广告植入.</p>
    <p class="title">百度</p>
    </div>
    </body>
    </html>
    """
    doc = PyQuery(url='http://www.baidu.com') #指定url,url里面的html源码
    doc2 = PyQuery(html) #指定html字符串
    doc3 = PyQuery(filename='index.html') #指定文件
    print(doc)
    print(doc2)
    print(doc3)
    

      css选择器

    css在bs模块里面也用过,用法差不多。具体如下

    print(doc2('.link')) #通过class
    print(doc2('#link1')) #通过id
    print(doc2('.content,#link1')) #找到所有class为content和id为link1的
    print(doc2('.content #link1')) #在content下面找到id为link1的元素
    print(doc2('a'))#找到所有的a标签
    print(doc2('[href]'))#找到所有带有href属性的元素
    print(doc2('a[target=_blank]'))#找到a标签下面target为_blank的
    

     常用方法

    # eq方法,获取第几个元素
    a_tags = doc2('a')
    print(a_tags.eq(0))  # a标签里面第一个
    print(a_tags.eq(1))  # a标签里面第二个
    
    # items()
    # 如果找到多个元素的话,想循环取元素的话,就得用.items()方法,items就是为了循环用的
    a_tag = doc2('a')
    for a in a_tag.items():
        print(a.text())
    
    # text() 、html()
    # text()方法是获取元素里面的文字的,html()是获取元素的html
    
    a = doc2('.content')
    print(a.html())  # html格式的
    print(a.text())  # 只有里面的文字
    
    # find方法,查找元素
    
    print(doc2.find('p').find('a'))  # 从所有的p标签里面找到a标签
    print(doc2.find('p'))  # 找到所有的p标签
    print(doc2.find('.content'))  # 找到所有class为content的
    
    # filter方法,用来筛选
    print(doc2.find('a').filter('#link1'))  # 先找到a标签,然后从a标签里面筛选出来id为link1的
    
    # attr方法,获取属性
    
    print(doc2('#link1').attr(('href')))  # 获取id为link1的href的属性值
    

      

  • 相关阅读:
    在UpdatePanel上使用FileUpload上传文件
    Android配置开发环境
    文件服务器共享目录设置(一)
    win2008R2的Hyperv安装Ubuntu
    Comodo Time Machine导致系统进不去
    sql2005生成sql2000脚本的时候出现“User.UserType: NoLogin 不是SQL Server 2005 的有效选项“ 的解决方案
    迅雷7偷偷上传文件导致机器变卡
    文件服务器共享目录设置(二)
    再谈Javascript原型继承
    a和a:link的区别
  • 原文地址:https://www.cnblogs.com/wxcx/p/12740905.html
Copyright © 2011-2022 走看看