• python之pyquery 学习


    pyquery是jQuery的Python实现,可以用以解析HTML网页的内容。官网文档:http://pythonhosted.org/pyquery/

    下载:https://pypi.python.org/pypi/pyquery#downloads

    测试了一下其功能如下:

    http://www.verycd.com/topics/2960375/的网页源码为例:

    提取originLink的图片链接地址:

       1: #!/usr/bin/python                                                                                                        
       2: from pyquery import PyQuery as pyq 
       3:  
       4: doc=pyq(url='http://www.verycd.com/topics/2960375/')
       5: for item in doc('span.post_origin_img'):
       6:   print doc(item).attr('originlink')

    执行结果:

    image

    注1:因为在span标签内,并且有class=”post_origin_img” 所以可以通过span.post_origin_img定位到标签。然后该图片对应的是originLink,所以可以对对应的item取其属性为originLink的值。

    注2:这里使用的originlink而不是originLink,是因为测试时,

       1: for item in doc('span.post_origin_img'):
       2:   print doc(item)                                                                                                        
       3:   print doc(item).attr('originlink')
    测试结果:看出其priginlink为小写。原因暂不详。

    image

       1: a title="PDF[2013/08/12 04:33:25]资源更新 共1个文件 42.2MB" href="/topics/2960275/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank">《金庸全集-三联典藏版》高清文字版[PDF]</a>                        </dd>
       2:                                                                                             <dd class="itshot">
       3:                         <a id="entry_link_2960032" title="PDF[2013/08/11 05:18:31]资源更新 共1个文件 882.31KB" href="/topics/2960032/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank" style="text-decoration:none;"><img load-src="http://i-7.vcimg.com/crop/7640b510631463a87309ad475a2505c328619(100x100)/thumb.jpg" alt="img" class="hot_img" height="100" width="100" style="display:inline;">
       4:                         <div id="entry_2960032" style="display:none;" class="entry_score_small"></div>
       5:                         </a>
       6:                         <br />
       7:                         <a title="PDF[2013/08/11 05:18:31]资源更新 共1个文件 882.31KB" href="/topics/2960032/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank">《灵魂21克》文字版[PDF]</a>                        </dd>
       8:                                                                                             <dd class="itshot">
       9:                         <a id="entry_link_2861322" title="EPUB[2011/07/10 02:06:05]资源更新 共47个文件 1.35GB" href="/topics/2861322/" onclick="VeryCD.Track('/stat/topicsHot/');" target="_blank" style="text-decoration:none;"><img load-src="http://i-7.vcimg.com/crop/349a7faf7ed72283e92b9b071678f6d1155641(100x100)/thumb.jpg" alt="img" class="hot_img" height="100" width="100" style="display:inline;">
      10:                         <div id="entry_2861322" style="display:none;" class="entry_score_small"></div>
      11:                         </a>

    可以根据id抽取内容,使用#id名字即可:实例如下:

       1: #!/usr/bin/python
       2: from pyquery import PyQuery as pyq 
       3:  
       4: doc=pyq(url='http://www.verycd.com/topics/2960375/')
       5: for item in doc('#entry_link_2861322'):
       6:   print doc(item)

    执行结果:抽取了id为entry_link_2861322的html

    image

    自己构造测试

       1: doc=pyq('<;p id="test" class="test1" attr1="attr1_value">hello</p>')
       2: print doc('p')
       3: print doc('p#test')                                                                                                      
       4: print doc('p#test.test1')
       5: print doc('p#test.test1').attr('attr1')

    执行结果:

    image

    结果上面的测试,我们看以看到使用pyquery,我们可以指定html的tag来抽取,是十分方便的。

  • 相关阅读:
    mysql中InnoDB存储引擎的行锁和表锁
    阿里云出海 埃森哲护航
    阿里云出海 埃森哲护航
    阿里云出海 埃森哲护航
    阿里云出海 埃森哲护航
    Python开发简单爬虫
    Python开发简单爬虫
    Python开发简单爬虫
    Python开发简单爬虫
    问大家一个问题,如何用1万元创业,每天利润达到500元?
  • 原文地址:https://www.cnblogs.com/lovemdx/p/3254980.html
Copyright © 2020-2023  润新知