python之pyquery 學習

來源:互聯網
上載者:User

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')

執行結果:

注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為小寫。原因暫不詳。

   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

自己構造測試

   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')

執行結果:

 

結果上面的測試,我們看以看到使用pyquery,我們可以指定html的tag來抽取,是十分方便的。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.