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來抽取,是十分方便的。