又是一個大晴天,因為馬上要召開十九大,北京地鐵就額外的擁擠,人貼人到爆炸,還好我常年擠地鐵早已練成了輕功水上漂,擠地鐵早已經不在話下。
勵志成為一名高級測試工程師的我,目前還只是個菜鳥,難得有機會,公司辭職的爬蟲大佬教了我下爬蟲,故借此機會分享給那些小白,
此篇只是簡單爬取了小說的標題,沒有涉及到框架,還望各位大佬海涵!!
環境准備:
pycharm(撩妹神器,人手一個) lxml(python的三方庫)
如果電腦里沒有安裝lxml的伙伴,可以安裝一下,在控制台輸入pip intall https://pypi.douban.com/simple lxml,
利用國外的源下載比較慢,我一般用國內的這個源下載,如果有更好的,歡迎各位留個腳印,么么噠
如果你輸入pip show lxml出現像我這樣的界面,咦咦咦,厲害了,說明你離走向爬蟲大師,差的不是一心半點了
導入文件:
好的,既然這樣,說搞就搞,小白們,撲上來吧,要那種純小白的,哈哈
在pycharm里邊新建一個py文件
然后引入requests(請求庫),以及lxml里邊的etree,如下圖
我們先打開豆瓣圖書的一個網址,網址是“https://read.douban.com/kind/100”,如下圖所示
定位爬取:
現在要做的就是去爬取“三體全集”,“評分”以及“小說簡介”這三個內容,可是怎么爬呢,那就要用到了xpath這個定位利器,用過的人都說好,他好我也好! //壞笑,壞笑
1.首先利用request進行get請求:
2.然后我們利用請求回來的r.content進行解析
3.下面重點來了,我們解析后的數據進行打印
我們可以知道這個html對象的位置,下面我們就要利用xpath去進行定位
在豆瓣網閱讀的網頁,我們點擊F12,然后點擊控制台的箭頭,點擊一下頁面上的三體全集,我們就可以找到該元素的位置了
在鎖定位置點擊右鍵,找到Copy,點擊Copy Xpath,然后在pycharm進行定位打印
其中利用content調用xpath方法,里邊寫上剛才copy好的位置,后邊加一個text(),然后進行取[0],
然后運行一下,what fuck,出現了什么,三體全集被打印了,還TM的有這種操作,是在逗我嗎!!
評分以及簡介同樣如此,如果我們想打印多個小說的這些屬性,通過定位不難發現,他們是有規律的,我們可以進行循環賦值進行打印,這樣就會出現如下所示
感謝各位的閱讀,此篇過於簡單,只是自己喜歡寫寫東西玩,如果能給您帶來樂趣,那將是我的榮幸,祝各位前程似錦,工作順利!!
源碼如下:
#coding=utf-8
import requests
from lxml import etree
def ReptileDouBan(url):
r = requests.get(url)
#print r.content
content = etree.HTML(r.content)
print content
for i in range(1,20):
print u"小說名稱:" + content.xpath("/html/body/div/div/article/div[2]/div[1]/ul/li[%d]/div[2]/div[2]/a/text()" %i)[0]
#print u"小說備注:" + content.xpath("/html/body/div/div/article/div[2]/div[1]/ul/li[%d]/div[2]/div[2]/p/text()" %i)[0]
print u"評分:" + content.xpath("/html/body/div/div/article/div[2]/div[1]/ul/li[%d]/div[2]/div[3]/span[2]/text()" %i)[0]
print u"介紹:" + content.xpath("/html/body/div/div/article/div[2]/div[1]/ul/li[%d]/div[2]/div[4]/text()" %i)[0]
if __name__ == '__main__':
url = "https://read.douban.com/kind/100"
ReptileDouBan(url)