• Python爬虫常用之PyQuery


    PyQuery是解析页面常用的库.是python对jquery的封装.
    下面是一份解析基本页面的代码.后期用到复杂或者实用的方式再增加.

     1 from pyquery import PyQuery as pq
     2 
     3 
     4 # 参数为字符串的情况
     5 html_str = "<html></html>"
     6 
     7 # 参数为网页链接(需带 http://)
     8 your_url = "http://www.baidu.com"
     9 
    10 # 参数为文件
    11 path_to_html_file = "hello123.html"
    12 
    13 # 将参数传入pq库之后得到html页面
    14 # d = pq(html_str)
    15 # d = pq(etree.fromstring(html_str))
    16 # d = pq(url=your_url)
    17 # d = pq(url=your_url,
    18 #        opener=lambda url, **kw: urlopen(url).read())
    19 d = pq(filename=path_to_html_file)
    20 
    21 # 此时的'd'相当于Jquery的'$',选择器,可以通过标签,id,class等选择元素
    22 
    23 # 通过id选择
    24 table = d("#my_table")
    25 
    26 # 通过标签选择
    27 head = d("head")
    28 
    29 # 通过样式选择,多个样式写一起,使用逗号隔开即可
    30 p = d(".p_font")
    31 
    32 # 获取标签内的文本
    33 text = p.text()
    34 print text
    35 
    36 # 获取标签的属性值
    37 t_class = table.attr('class')
    38 print t_class
    39 
    40 # 遍历标签内的选项
    41 # 打印表格中的td中的文字
    42 for item in table.items():
    43     # 这个循环只循环一次,item仍然是pquery的对象
    44     print item.text()
    45 
    46 for item in table('td'):
    47     # 这个循环循环多次,item是html的对象
    48     print item.text

    用于测试的html代码: 

     1 
    <head>

    3
    <title>Test</title> 4 </head> 5 <body> 6 <h1>Parse me!</h1> 7 <img src = "" /> 8 <p>A paragraph.</p> 9 <p class = "p_font">A paragraph with class.</p> 10 <!-- comment --> 11 <div> 12 <p>A paragraph in div.</p> 13 </div> 14 <table id = "my_table" class = "test-table"> 15 <thead> 16 </thead> 17 <tbody> 18 <tr> 19 <td>Month</td> 20 <td>Savings</td> 21 </tr> 22 <tr> 23 <td>January</td> 24 <td>$100</td> 25 </tr> 26 </tbody> 27 </table> 28 </body> 29 </html>

    分析html的结果输出如下:

    A paragraph with class.
    test-table
    Month Savings January $100
    Month
    Savings
    January
    $100

    由于使用python2,有的网页使用requests直接抓取下来放入pyquery()里面会出编码问题,这时使用unicode()转换一下即可.部分代码如下:

    import requests
    from pyquery import PyQuery as pq
    
    r = requests.get('http://www.baidu.com')
    # d = pq(r.content)
    u = unicode(r.content, 'utf-8')
    d = pq(u)
  • 相关阅读:
    tinymce原装插件源码分析(二)-link
    tinymce原装插件源码分析(一)-hr
    pyinstall 常见错误
    matlab Time-domain analysis 渐进式或者实时获取仿真值
    初识python和pycharm
    自定义指令详解
    Vue核心知识一览
    多维数组 转化为 一维数组
    js面试之数组的几个不low操作
    js如何操作或是更改sass里的变量
  • 原文地址:https://www.cnblogs.com/masako/p/6627468.html
Copyright © 2020-2023  润新知