Python爬虫! 单爬,批量爬,这都不是事!
生活随笔
收集整理的這篇文章主要介紹了
Python爬虫! 单爬,批量爬,这都不是事!
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
昨天做了一個煎蛋網妹子圖的爬蟲,個人感覺效果不錯。但是每次都得重復的敲辣么多的代碼(相比于Java或者其他語言的爬蟲實現,Python的代碼量可謂是相當的少了),就封裝了一下!可以實現對批量網址以及單個網址的爬蟲!
核心代碼
# coding:UTF-8# 導入我們需要的網絡模塊,正則表達式模塊,以及產生隨機數的模塊 import urllib2,urllib,re,random# 根據傳入的URL網址,獲得該網址對應的全部的html頁面(純網頁,并沒有做任何的解析) def getHtml(url,headers) :request = urllib2.Request(url,headers=headers)response = urllib2.urlopen(request)page = response.read()return page# 根據之前獲得那個url對應的網頁信息,將這張網頁里面包含的所有的含有<img src=".+\.jpg"/>的url存儲到一個列表中 def getImageUrls(page):reg = r'src="(.+?\.jpg)"'imageReg = re.compile(reg)img_urls = re.findall(imageReg,page)return img_urls# 這是個測試的方法,并沒有實際的價值。列出來的目的只是為了紀念一下,最終功能實現的這個過程,僅此! # def getTotalImageUrls(original_url,headers): # totalImageUrls = [] # for item in range(1980, 1990): # original_url += original_url + str(item) # page = getHtml(original_url,headers) # images_url = getImageUrls(page) # totalImageUrls.append(images_url) # return totalImageUrls# 根據給定的路徑,文件名,將指定的數據(這里是一張圖片,是的。一張圖片)寫入到文件中。需要注意的是每次都需要關閉file def writeToFile(path,name,data):file = open(path+name,'wb')file.write(data)file.close()print name+" has been Writed Succeed!"# 下載圖片,并且調用剛才的 writeToFile(path,name,data): 函數。將圖片直接寫到對應的路徑下面 # 這里借助于一個random模塊,為了產生圖片之間盡量不重復的文件名,以防止文件的覆蓋或者出現其他的問題 def downloadImages(images_url,path,headers) :for i, item in enumerate(images_url):everypicture = getHtml(item,headers)# 此處下載之后的文件使用了item來命名是為了避免圖片的覆蓋writeToFile(path, str(i+random.randint(1,100000000)) + ".jpg", everypicture)# 提供單個url網址內圖片的下載 def singleImageDownload(outputPath,targeturl,headers) :originalurl = targeturlpage = getHtml(originalurl,headers)images_url = getImageUrls(page)downloadImages(images_url,path,headers)# 提供批量下載的函數,對未成功下載的提示未成功下載語句 def batchImageDownload(outputPath, originalurl, headers, start, end):for item in range(2000, 4000):try:originalurl = 'http://bizhi.souutu.com/mnbz/' + str(item) + '.html'page = getHtml(originalurl)images_url = getImageUrls(page)downloadImages(images_url,headers)except:print str(item) + str(' web site cannot be spidered! Sorry!')continue# -------------------------------------------------------------------------------------------------- # 下面是我們的測試代碼,僅僅拿單個url頁面做了個測試,親測好使headers = {'referer':'http://bizhi.souutu.com/mnbz/3712.html','User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/50.0.2661.94 Safari/537.36' }path = "F:\\pachong\\bizhi\\" url = 'http://bizhi.souutu.com/mnbz/3712.html' singleImageDownload(path,url,headers)后話
這里并沒有使用類來進行封裝,沒有用BeautifulSoup的原因是我還沒學到
無奈.裝傻~ ( ̄▽ ̄)~* ( ̄▽ ̄)" ╮(╯▽╰)╭ ╮( ̄▽ ̄)╭但是咧,這在Python中是不妨礙滴,照樣爬嘛,(^__^) 嘻嘻……
我是新手,代碼中可能有不恰當的地方,歡迎批評指正!
總結
以上是生活随笔為你收集整理的Python爬虫! 单爬,批量爬,这都不是事!的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: html5跨域通讯之postMessag
- 下一篇: Linux压缩解压缩命令