Python學習契讲,還在用正則或者bs4做爬蟲嗎创肥?來試試css選擇器吧

之前寫的一些爬蟲都是用的正則矿酵、bs4浪箭、xpath做為解析庫來實現(xiàn)婴梧,如果你對web有所涉及下梢,并且比較喜歡css選擇器,那么就有一個更適合的解析庫—— PyQuery塞蹭。我們就用一個非常簡單的小例子來看看css選擇器做爬蟲是怎么樣的孽江!

安裝

直接pip安裝即可:pip install pyquery

安裝完成后,運行 pip show pyquery番电,如果出現(xiàn)相關(guān)信息即為安裝完成岗屏!

如果pip安裝失敗,可以去官網(wǎng)https://pypi.org/project/pyquery/#downloads下載wheel文件漱办,然后用pip安裝即可这刷,注意文件名字要寫全,比如:pip install pyquery-1.2.17-py2.py3-none-any.whl ,該命令請在同一目錄下使用洼冻。

使用

確保安裝成功后就可以開始使用了崭歧,它和其他庫一樣,PyQuery 初始化的時候也需要傳入 HTML 數(shù)據(jù)源來初始化一個操作對象撞牢,它的初始化方式有多種率碾,比如直接傳入字符串叔营,傳入 URL,傳文件名所宰。

我們用requests庫搭配來寫個簡單的抓取鳳凰新聞的小爬蟲绒尊,方便理解:

打開鳳凰網(wǎng)——資訊——即時新聞,我們就以抓取這個頁面的所有新聞為例吧仔粥!

這里沒有反爬婴谱,頁數(shù)也不是很多(4頁),非常方便用來講解躯泰!分析下網(wǎng)頁結(jié)構(gòu)后發(fā)現(xiàn)谭羔,所有的新聞目錄都存在于網(wǎng)頁源代碼中,每頁大概有60多條麦向,我們先來抓取一頁的標題和url試試

可以看到瘟裸,標題和url都在class=newsList的div下的ul->li->a標簽下(用a標簽的target屬性匹配的話太多,不好清洗)诵竭,我們可以直接寫如代碼去獲取相關(guān)內(nèi)容了话告,如下圖:

python直播學習群542110741

前面是常規(guī)的requests庫獲取源代碼html,然后用PyQuery解析網(wǎng)頁源代碼卵慰,重點是后面的定位到a標簽和取出內(nèi)容沙郭。

doc('.newsList ul a') 的意思是定位class屬性為newsList的標簽下面的ul下面的a標簽,注意newsList前面有個點裳朋,代表class屬性病线,ul和a標簽之間有個li標簽,因為ul下的a標簽是唯一再扭,所以省略了(ul標簽沒有省略是因為最下面翻頁部分也在這個div下氧苍,省略會有其他內(nèi)容出現(xiàn),下面會單獨提取)!然后定位到a標簽后泛范,用items()方法將所有的a標簽取出让虐,然后遍歷取出里面的內(nèi)容。

這里提取標簽的內(nèi)容用了2個方法text()和attr():

text()方法罢荡,可以提取出標簽下的所有文本內(nèi)容赡突,注意是所有!G浴惭缰!

attr()方法,取出標簽的某屬性笼才,2中寫法都可以:new.attr.href 和new.attr('href')

然后在看翻頁漱受,我們只需要判斷是否存在下一頁,存在時骡送,查找所有的標題和url昂羡,然后獲取下一頁的url絮记,繼續(xù)查找,直到不存在下一頁虐先,所有的頁面就都遍歷過了怨愤!為了方便,直接做成了一個函數(shù)蛹批,來看代碼

這里同樣的用class屬性來定位撰洗,找到它下的a標簽,然后判斷‘下一頁’是否存在a標簽的文本中腐芍,存在則取出下一頁的url差导,然后再次調(diào)用函數(shù),不存在則退出甸赃!

這樣柿汛,我們就得到了4頁所有的title和url的內(nèi)容,在來看看新聞詳情頁的情況埠对,所有的網(wǎng)頁文本內(nèi)容都在id="main_content"的div下的好多p標簽中,那么就用到了text()方法了裁替!來看圖

這樣项玛,我們就取到了所有內(nèi)容,整合下弱判,最后代碼如下:

隨手寫的代碼襟沮,就不寫入文本或者數(shù)據(jù)庫什么了,主要是學習css選擇器的使用昌腰!

最后

?到這里PyQuery 的用法就介紹完了开伏,當然只是用到了很少一部分,還有好多功能沒有在這里使用遭商,大家有興趣可以去看看官方文檔或者教程固灵,而且css選擇器也可以使用在scrapy框架!是非常方便的一種方式劫流!

現(xiàn)在學習python的人越來越多巫玻,很多人還在找資料,或者疑問哪本書是否有用祠汇,或者想找個可以指導的老師仍秤,或者在尋找一起學習的小伙伴,如果你也是需要資料或者需要幫助的話可很,可以關(guān)注我诗力,私信一起來交流學習!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末我抠,一起剝皮案震驚了整個濱河市苇本,隨后出現(xiàn)的幾起案子导坟,更是在濱河造成了極大的恐慌,老刑警劉巖圈澈,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件惫周,死亡現(xiàn)場離奇詭異,居然都是意外死亡康栈,警方通過查閱死者的電腦和手機递递,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來啥么,“玉大人登舞,你說我怎么就攤上這事⌒伲” “怎么了菠秒?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長氯迂。 經(jīng)常有香客問我践叠,道長,這世上最難降的妖魔是什么嚼蚀? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任禁灼,我火速辦了婚禮,結(jié)果婚禮上轿曙,老公的妹妹穿的比我還像新娘弄捕。我一直安慰自己,他們只是感情好导帝,可當我...
    茶點故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布守谓。 她就那樣靜靜地躺著,像睡著了一般您单。 火紅的嫁衣襯著肌膚如雪斋荞。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天睹限,我揣著相機與錄音譬猫,去河邊找鬼。 笑死羡疗,一個胖子當著我的面吹牛染服,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播叨恨,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼柳刮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秉颗,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤痢毒,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后蚕甥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哪替,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年菇怀,在試婚紗的時候發(fā)現(xiàn)自己被綠了凭舶。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,133評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡爱沟,死狀恐怖帅霜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情呼伸,我是刑警寧澤身冀,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站括享,受9級特大地震影響搂根,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜奶浦,卻給世界環(huán)境...
    茶點故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一兄墅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧澳叉,春花似錦、人聲如沸沐悦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽藏否。三九已至瓶殃,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間副签,已是汗流浹背遥椿。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留淆储,地道東北人冠场。 一個月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像本砰,于是被迫代替她去往敵國和親碴裙。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容