python試爬李毅吧貼子標(biāo)題,爬蟲最初級(jí)

注:以下所有python代碼均運(yùn)行于2.7.0

最近想抓點(diǎn)數(shù)據(jù)存起來,開始搗鼓python。爬蟲技術(shù)以前沒接觸過,這一回就當(dāng)練手,從零開始,從最原始的方式開始。先定個(gè)小目標(biāo),抓一下著名的“李毅吧”的一些貼子標(biāo)題。

要爬數(shù)據(jù),第一步肯定是網(wǎng)絡(luò)請(qǐng)求,在這里主要是指get/post請(qǐng)求。第二步是對(duì)返回的html進(jìn)行解析。第三步是從解析后的DOM樹里取我們想要的東西。

在這些步驟進(jìn)行之前,要先安裝lxml,這個(gè)用pip install lxml就可以了。

第一步,使用urllib2,先把李毅吧的url請(qǐng)求一下。百度目前使用的是https,這個(gè)沒關(guān)系。https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9D%8E%E6%AF%85/

然后打開命令窗口,python。let's go。
import urllib2 from lxml import etree r = urllib2.urlopen("https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9D%8E%E6%AF%85") p = r.read()
好了,是不是代碼很簡短,我們第一步就完成了。

第二步,要引入lxml,來解析取到的html文件。解析前肯定是要用開發(fā)者工具先分析一下html源碼的,要不然怎么找到規(guī)律去匹配我們想要的內(nèi)容呢。用開發(fā)者工具定位到貼吧的貼子都是位于一個(gè)div里面,這個(gè)div的id是content,class也是content。每個(gè)貼子的標(biāo)題都是一個(gè)超鏈接,標(biāo)題內(nèi)容放在這個(gè)超鏈接的title里。

簡單的介紹一下lxml的路徑表達(dá)式:
//body/a[1] 取body下的第一個(gè)a元素 //a[@href] 取所有擁有屬性名為href的a元素 //a[@href='img.html'] 取所有htre屬性為img.html的a元素 根據(jù)前面的分析,要取到貼子的標(biāo)題,需要這么寫 //div[@id='content']//a//@title
下面開始解析:
e = etree.HTML(decode_html) l = e.xpath("http://div[@id='content']//a//@title")
第二步到此為止,通過xpath能匹配到所有的貼子標(biāo)題。

第三步就是數(shù)據(jù)過濾、清洗、轉(zhuǎn)換、存儲(chǔ)之類的工作了,沒有什么通用性。因?yàn)閘是一個(gè)列表,里面又存的是utf8,對(duì)于一些新手來說,可能很抓狂,因?yàn)椴荒芎苤庇^地看到漢字。
加上這一段就好了:

    print item```
最后附上代碼:

`#-*- coding: utf-8 -*-`

import urllib2
import lxml
from lxml import etree

r = urllib2.urlopen("https://tieba.baidu.com/f?ie=utf-8&kw=%E6%9D%8E%E6%AF%85")

raw_html = r.read()

decode_html = raw_html.decode("utf-8")

dom_html = etree.HTML(decode_html)

title_list = dom_html.xpath("http://div[@id='content']//a//@title")

for item in title_list:
print item

這個(gè)代碼沒有真正實(shí)現(xiàn)只抓貼子標(biāo)題的功能,抓的內(nèi)容超出了貼子標(biāo)題的范圍。還需要優(yōu)化一下才可以的。

![try_baidu_liyi.png](http://upload-images.jianshu.io/upload_images/5205908-e446959a38a2d768.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,122評(píng)論 1 92
  • 聲明:本文講解的實(shí)戰(zhàn)內(nèi)容,均僅用于學(xué)習(xí)交流,請(qǐng)勿用于任何商業(yè)用途! 一、前言 強(qiáng)烈建議:請(qǐng)?jiān)陔娔X的陪同下,閱讀本文...
    Bruce_Szh閱讀 13,001評(píng)論 6 28
  • 20170531 這幾天重新拾起了爬蟲,算起來有將近5個(gè)月不碰python爬蟲了。 對(duì)照著網(wǎng)上的程序和自己以前寫的...
    八神蒼月閱讀 14,377評(píng)論 3 44
  • 當(dāng)天空漸變灰蒙 當(dāng)皓月慢慢升空 停下匆匆的腳步 聆聽窗外的鐘聲 余音繞梁中 你漸漸地來臨——夜 夜下的你 不須忘我...
    漫歩書生閱讀 279評(píng)論 0 2
  • 總有一天,你的父母不再能理解你所學(xué)的東西,他們只能在電話里讓你保重身體,然后一邊垂垂老去,一邊盼你回家。年少時(shí)總覺...
    篤學(xué)青衿閱讀 157評(píng)論 0 0

友情鏈接更多精彩內(nèi)容