本次爬取的貼吧是百度的美女吧,給廣大男同胞們一些激勵
在爬取之前需要在瀏覽器先登入百度貼吧的帳號,各位也可以在代碼中使用post提交或者加入cookie
爬行地址:http://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn=0
#-*- coding:utf-8 -*-import urllib2import reimport requestsfrom lxml import etree這些是要匯入的庫,代碼並沒有使用正則,使用的是xpath,正則困難的童鞋可以嘗試使用下推薦各位先使用基本庫來寫,這樣可以學習到更多links=[] #遍曆url的地址k=1 print u'請輸入最後的頁數:'endPage=int(raw_input()) #最終的頁數 (r'\d+(?=\s*頁) 這是一個比較通用的正則抓取總頁數的代碼,當然最後要group#這裡是手動輸入頁數,避免內容太多for j in range(0,endPage): url='http://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn='+str(j) #頁數的url地址 html=urllib2.urlopen(url).read() #讀取首頁的內容 selector=etree.HTML(html) #轉換為xml,用於在接下來識別 links=selector.xpath('//div/a[@class="j_th_tit"]/@href') #抓取當前頁面的所有文章的url#大家可以使用瀏覽器內建的源碼查看工具,在指定目標處查看元素,這樣更快捷 for i in links: url1="http://tieba.baidu.com"+i #因為爬取到的地址是相對位址,所以要加上百度的domain html2=urllib2.urlopen(url1).read() #讀取當前頁面的內容 selector=etree.HTML(html2) #轉換為xml用於識別 link=selector.xpath('//img[@class="BDE_Image"]/@src') #抓取圖片,各位也可以更換為正則,或者其他你想要的內容#此處就是遍曆下載 for each in link: #print each print u'正在下載%d'%k fp=open('image/'+str(k)+'.bmp','wb') #下載在目前的目錄下 image檔案夾內,圖片格式為bmp image1=urllib2.urlopen(each).read() #讀取圖片的內容 fp.write(image1) #寫入圖片 fp.close() k+=1 #k就是檔案的名字,每下載一個檔案就加1print u'下載完成!'
如果想要爬取其他網站的內容,大家可以參考一下