欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬蟲輔助利器PyQuery模塊的安裝使用攻略

 更新時間:2016年04月24日 17:39:17   作者:onlyanyz  
這篇文章主要介紹了Python爬蟲輔助利器PyQuery模塊的安裝使用攻略,PyQuery可以方便地用來解析HTML內(nèi)容,使其成為眾多爬蟲程序開發(fā)者的大愛,需要的朋友可以參考下

Windows下的安裝:
下載地址:https://pypi.python.org/pypi/pyquery/#downloads
下載后安裝:

C:\Python27>easy_install E:\python\pyquery-1.2.4.zip 

也可以直接在線安裝:

C:\Python27>easy_install pyquery 

pyquery是一個類似jquery的python庫,可以使用像jquery那樣的語法來提取網(wǎng)頁中的任何數(shù)據(jù),這個用于html網(wǎng)頁的數(shù)據(jù)提取和挖掘還是一個很不錯的第三方庫的。下面我們來看下pyquery的用法有哪些。

從html字符串中提取信息

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pyquery import PyQuery as pq
html = '''
<html>
<head>
 <title>this is title</title>
</head>
<body>
 <p id="hi">Hello, World</p>
 <p id="hi2">Nihao</p>
 <div class="class1">
  <img src="1.jpg" />
 </div>
 <ul>
  <li>list1</li>
  <li>list2</li>
 </ul>
</body>
</html>
'''
d=pq(html)

print d('title') # 相當(dāng)于css選擇器,根據(jù)html標(biāo)簽獲取元素
print d('title').text() # text()方法獲取當(dāng)前選中的文本塊

print d('#hi').text() # 相當(dāng)于id選擇器,直接根據(jù)id名獲取元素
print d('p').filter('#hi2').text() # 可以根據(jù)id或class得到指定元素
print d('.class1') # 相當(dāng)于class選擇器
print d('.class1').html() # html()方法獲取當(dāng)前選中的html塊
print d('.class1').find('img').attr('src') # 查找嵌套元素,并選中屬性
print d('ul').find('li').eq(0).text() # 根據(jù)索引號獲取多個相同html元素中的某一個
print d('ul').children() # 獲取所有子元素
print d('ul').children().eq(0) #根據(jù)索引獲取子元素
print d('img').parents() # 獲取父元素
print d('#hi').next() # 獲取下一個元素
print d('#hi').nextAll() #獲取后面全部元素塊
print d('p').not_('#hi2') # 返回不匹配選擇器的元素
# 遍歷所有匹配的元素
for i in d.items('li'):
 print i.text()
print [i.text() for i in d.items('li')] # 遍歷用于列表推倒
print d.make_links_absolute(base_url='http://www.baidu.com') # 把html文檔中的相對路徑變?yōu)榻^對路徑

上面的代碼段給出了pyquery常用的操作方法。我們先定義了一段html代碼,然后利用pyquery的一系列方法對該html代碼進行了操作,主要是獲取特定的元素以及文本等。當(dāng)然,pyquery不僅僅能夠獲取元素,還能進行設(shè)置元素屬性、增加元素等功能,鑒于我們最常用的就是上面代碼中用到的方法,這里就不再對其他方法進行介紹了。

從url或本地html文件中提取信息

當(dāng)然,pyquery也不僅僅可以解析像上面的html字符串,還可以這樣:

d = pq(url='http://www.baidu.com/')

我們可以直接加載一個URL,和上面的操作方法沒有任何區(qū)別。這種方法默認(rèn)使用urllib模塊進行http請求,但如果你的系統(tǒng)中安裝了requests的話,那么就會使用requests來進行http請求,這也就意味著你可以使用requests的任何參數(shù),比如:

pq('http://www.baidu.com/', headers={'user-agent': 'pyquery'})

或者,如果你在你的本地已經(jīng)有了對應(yīng)的html文件,那么還可以這樣:

d = pq(filename=path_to_html_file)

上面的寫法直接指定了本地的html文件,且操作方法仍然與上面的相同。
可以看到,pyquery給我們提供充分的便利性來進行任何元素的選取,就像jquery一樣。

利用pyquery抓取豆瓣電影top250

看完了pyquery的語法,我們來看一個實例,抓取豆瓣電影top250。
因為豆瓣反爬蟲反的厲害,運行幾次就沒法再抓了,我只好先用requests把頁面下載下來,直接使用pyquery分析頁面的方法來提取信息:

from pyquery import PyQuery as pq
import requests

head_req = {
 'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36',
 'Referer':'https://movie.douban.com/top250?start=0',

}
r=requests.get("https://movie.douban.com/top250?start=0",headers=head_req)
with open("1.html","wb") as html:
 html.write(r.content)

d=pq(filename="1.html")

# print d('ol').find('li').html()
for data in d('ol').items('li'):
 print data.find('.hd').find('.title').eq(0).text()
 print data.find('.star').find('.rating_num').text()
 print data.find('.quote').find('.inq').text()
 print

運行下看看結(jié)果:

肖申克的救贖
9.6
希望讓人自由。

這個殺手不太冷
9.4
怪蜀黍和小蘿莉不得不說的故事。

阿甘正傳
9.4
一部美國近現(xiàn)代史。

霸王別姬
9.4
風(fēng)華絕代。

美麗人生
9.5
最美的謊言。

千與千尋
9.2
最好的宮崎駿,最好的久石讓。

辛德勒的名單
9.4
拯救一個人,就是拯救整個世界。

海上鋼琴師
9.2
每個人都要走一條自己堅定了的路,就算是粉身碎骨。

機器人總動員
9.3
小瓦力,大人生。

盜夢空間
9.2
諾蘭給了我們一場無法盜取的夢。

泰坦尼克號
9.1
失去的才是永恒的。

三傻大鬧寶萊塢
9.1
英俊版憨豆,高情商版謝耳朵。

放牛班的春天
9.2
天籟一般的童聲,是最接近上帝的存在。

忠犬八公的故事
9.2
永遠都不能忘記你所愛的人。

龍貓
9.1
人人心中都有個龍貓,童年就永遠不會消失。

大話西游之大圣娶親
9.1
一生所愛。

教父
9.2
千萬不要記恨你的對手,這樣會讓你失去理智。

亂世佳人
9.2
Tomorrow is another day.

天堂電影院
9.1
那些吻戲,那些青春,都在影院的黑暗里被淚水沖刷得無比清晰。

當(dāng)幸福來敲門
8.9
平民勵志片。

搏擊俱樂部
9.0
邪惡與平庸蟄伏于同一個母體,在特定的時間互相對峙。

楚門的世界
9.0
如果再也不能見到你,祝你早安,午安,晚安。

觸不可及
9.1
滿滿溫情的高雅喜劇。

指環(huán)王3:王者無敵
9.1
史詩的終章。

羅馬假日
8.9
愛情哪怕只有一天。

當(dāng)然這只是第一頁的25條,我們已經(jīng)知道了豆瓣電影top250的url是

https://movie.douban.com/top250?start=0
start參數(shù)從0,每次加25,直到

https://movie.douban.com/top250?start=225
所以可以寫個循環(huán)把它們都抓下來。

相關(guān)文章

  • 快速上手Python Kafka庫安裝攻略

    快速上手Python Kafka庫安裝攻略

    想要在Python中使用Kafka庫嗎?不用擔(dān)心,我們的安裝指南將幫助你快速上手,無論你是初學(xué)者還是有經(jīng)驗的開發(fā)者,這篇指南都能滿足你的需求,跟著我們一起來探索如何輕松安裝Python Kafka庫吧!
    2023-12-12
  • 在pycharm中文件取消用 pytest模式打開的操作

    在pycharm中文件取消用 pytest模式打開的操作

    這篇文章主要介紹了在pycharm中文件取消用 pytest模式打開的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • Ubuntu配置Python環(huán)境的超詳細教程

    Ubuntu配置Python環(huán)境的超詳細教程

    這篇文章主要給大家介紹了關(guān)于Ubuntu配置Python環(huán)境的超詳細教程,文中通過代碼示例將配置的過程介紹的非常詳細,對大家學(xué)習(xí)或者使用Python具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-08-08
  • Python使用bar繪制堆積/帶誤差棒柱形圖的實現(xiàn)

    Python使用bar繪制堆積/帶誤差棒柱形圖的實現(xiàn)

    本文先講解bar參數(shù)如何使用,然后分別演示堆積柱形圖和帶誤差柱形圖畫法。具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • Python找出list中最常出現(xiàn)元素的方法

    Python找出list中最常出現(xiàn)元素的方法

    這篇文章主要介紹了Python找出list中最常出現(xiàn)元素的方法,給出了三種常用的方法供大家對比參考,需要的朋友可以參考下
    2016-06-06
  • 在Python函數(shù)中輸入任意數(shù)量參數(shù)的實例

    在Python函數(shù)中輸入任意數(shù)量參數(shù)的實例

    今天小編就為大家分享一篇在Python函數(shù)中輸入任意數(shù)量參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-07-07
  • Python Docx庫完美操作word文檔實例探究

    Python Docx庫完美操作word文檔實例探究

    這篇文章主要為大家介紹了Python Docx庫完美操作word文檔,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2024-01-01
  • Python GUI布局尺寸適配方法

    Python GUI布局尺寸適配方法

    今天小編就為大家分享一篇Python GUI布局尺寸適配方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • 詳解Python中的文件操作

    詳解Python中的文件操作

    在日常生活中,文件操作主要包括打開、關(guān)閉、讀、寫等操作,這篇文章主要為大家詳細介紹了Python中這些文件操作的實現(xiàn),需要的可以了解下
    2023-07-07
  • Python邊緣檢測之prewitt,sobel和laplace算子詳解

    Python邊緣檢測之prewitt,sobel和laplace算子詳解

    這篇文章主要為大家詳細介紹了Python邊緣檢測中prewitt、sobel和laplace算子的使用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以了解一下
    2023-04-04

最新評論