爬蟲下載百度貼吧圖片


本次爬取的貼吧是百度的美女吧,給廣大男同胞們一些激勵

在爬取之前需要在瀏覽器先登錄百度貼吧的帳號,各位也可以在代碼中使用post提交或者加入cookie

 

爬行地址:http://tieba.baidu.com/f?kw=%E7%BE%8E%E5%A5%B3&ie=utf-8&pn=0

#-*- coding:utf-8 -*-
import urllib2
import re
import requests
from 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就是文件的名字,每下載一個文件就加1


print u'下載完成!'

 

如果想要爬取其他站點的內容,大家可以參考一下


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM